【发布时间】:2016-10-22 08:50:15
【问题描述】:
我有一张表 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 格式只有月和年?
谢谢。
【问题讨论】:
-
您应该使用
Date数据类型来存储日期。 -
数量
50.00出现在预期结果集中的逻辑是什么? -
我有72,000条雇主汇款记录。我们需要知道在 2015 年以下的适用期限内,所有 PRIVATE 公司支付了多少汇款。这只是一个例子。我应该为示例添加更多记录吗?
-
您的 ap_from 和 ap_to 列的类型是什么?我认为这些不是日期,因为
12/2015在您的结果中不是日期格式 -
数据类型为varchar
标签: mysql sql date group-by where-clause