我有一个表tbl_remit。
|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_ap2015,然后选择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格式只是月份和年份?
谢谢。
答案 0 :(得分:4)
正如@Giorgos指出的那样,您似乎使用文本类型而不是日期类型存储日期。 从不这样做。但是,既然你有,你可以使用STR_TO_DATE
在进行比较时将文本转换为日期。
您遇到的另一个问题是您在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
答案 1 :(得分: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