2016-10-22 26 views
0

テーブルtbl_remitがあります。mysqlの2つの日付に基づいてレコードを選択する方法

|RemitNo|id|emp|emp_loc| emp_cat |ap_from| ap_to |amount| 
| 1 |1 | a | PAL | PRIVATE |12/2015|12/2015| 50.00| 
| 2 |1 | a | PAL | PRIVATE |01/2016|01/2016|100.00| 
| 3 |1 | a | PAL | PRIVATE |02/2016|02/2016|100.00| 
| 4 |2 | b | BTG |GOVERNMENT|01/2016|01/2016|200.00| 
| 5 |2 | b | BTG |GOVERNMENT|02/2016|02/2016|200.00| 
| 6 |3 | c | MAR | PRIVATE |12/2015|12/2015| 50.00| 
| 7 |3 | c | MAR | PRIVATE |01/2016|01/2016|100.00| 
| 8 |3 | c | MAR | PRIVATE |02/2016|02/2016|100.00| 

私はview_ap2015belowを作成し、2015年と下からのすべての送金の合計/合計を選択する必要があり、どこemp_catはプライベートとemp_locでグループにあります。

私はこのテーブルを取得する必要があります。

|emp_loc| emp_cat |amount| 
| PAL | PRIVATE | 50.00| 
| MAR | PRIVATE | 50.00| 

私はこの声明を使用しましたが、2016年の送金はまだあります。

SELECT Emp_loc, Emp_Cat, FORMAT(SUM(Amount),2) As Amount 
FROM tbl_remit 
WHERE AP_from <= '01/01/2015' AND AP_To <= '01/01/2015' AND Emp_Cat = 'PRIVATE' 
GROUP BY Emp_Loc 

AP_FromとAP_To形式の日付が月と年のみであるためですか?

ありがとうございます。

+4

日付を保存するには、「日付」データ型を使用する必要があります。 –

+1

予想される結果セットに「50.00」の金額が表示されるロジックは何ですか? –

+0

私は雇用者の送金の72000レコードを持っています。私たちは、プライベート・カンパニー全員が2015年の適用期間に支払った送金額を知る必要があります。それは単なる例です。私は例のためのレコードを追加する必要がありますか? – Clorae

答えて

4

@Giorgosは、日付タイプではなくテキストタイプを使用して日付を保存しているように見えます。 しないこれを行う。しかし、あなたが持っているので、あなたはSTR_TO_DATEを使用して、比較を行うときに日付にテキストを変換することができます。

もう1つの問題は、GROUP BYクエリで非集計列を選択していたことです。

SELECT Emp_loc, Emp_Cat, FORMAT(MIN(Amount),2) As Amount 
FROM tbl_remit 
WHERE STR_TO_DATE(AP_from, '%m/%Y') <= '2015-01-01' AND 
     STR_TO_DATE(AP_to, '%m/%Y') <= '2015-01-01' AND 
     Emp_Cat = 'PRIVATE' 
GROUP BY Emp_Loc, Emp_Cat 
+0

はいでした。申し訳ありませんが、最初にレコードを整理します。しかし、この先生に感謝します:) – Clorae

+0

卿、GROUP BY Emp_Loc、Emp_Catの背後にある理由は何ですか? – Clorae

+1

'Emp_Cat'を選択したい場合は、' GROUP BY'節に現われなければならないか、それは集約関数の中になければなりません。私はそれが最も理にかなっているように思ったので、前者を選んだ。 –

0

ap_fromとap_toはDATE型ですか? これを試してください

SELECT Emp_loc, Emp_Cat, FORMAT(SUM(Amount),2) As Amount 
FROM tbl_remit 
WHERE YEAR(AP_from) = 2015 AND YEAR(AP_To) = 2015 AND Emp_Cat = 'PRIVATE' 
GROUP BY Emp_Loc 
+1

はap_fromとap_toと思われます** ** **日付タイプ – Sami

+0

はいそうではありません。私はまず自分の記録を整理し、これを使用します。 – Clorae

関連する問題