为什么这个sql会这样返回?

时间:2013-05-01 09:21:54

标签: sql hibernate

我有以下sql

SELECT SUM(amount) from CustomerPayment where date like '%2013' GROUP BY TYPE
列中有两个选择,一个是BANK,另一个是CASH

我想分开总结这些。例如:银行总共500,现金是400

但是上面的sql并没有对记录求和。相反,它返回银行和现金记录的第一个记录。为什么呢?

4 个答案:

答案 0 :(得分:0)

我想说尝试将类型添加到sql查询中。然后它具有您希望分组的类型的可见表示。

 SELECT SUM(amount), TYPE from CustomerPayment where date like '%2013' GROUP BY TYPE

答案 1 :(得分:0)

你可以尝试使用year(date)= 2013,因为数据不存在所以我猜测'like'函数是不是让group by正常执行它的功能。

答案 2 :(得分:0)

如果您的日期字段的数据类型为DateDateTime,那么LIKE运算符将无效。

日期比较使用日期函数。

SELECT SUM(amount)
FROM CustomerPayment
WHERE YEAR(date) = 2013
GROUP BY TYPE

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_year

答案 3 :(得分:-1)

包括TYPE col

SELECT TYPE, SUM(amount) from CustomerPayment where date like '%2013' GROUP BY TYPE