Stream
我正在使用MySQL,我需要每个月给定年份的总金额支出(如果给定月份没有金额花费那么它应该打印零)。 上面的查询正是我需要的,但我得到的是单独行中的总值。 我需要像所有月份一样的所有价值应该在一行中。这样我就可以轻松阅读。
答案 0 :(得分:1)
你很亲密。只需删除GROUP BY
。
您不应将日期存储为字符串。在极少数情况下,这是必要的。但我会建议你修改类型格式,所以日期存储为日期。
其次,您可以使用like
简化逻辑。如果您有字符串,请使用字符串操作:
SELECT SUM(CASE WHEN sm.BillDate LIKE '%/01/%' THEN sm.GrandTotal ELSE 0 END) AS January,
. . .
第三,YEAR()
返回一个整数,因此比较应该是一个整数。但是,如果值是一个字符串,只需执行:
WHERE BillDate LIKE '%2017'
或者,如前所述,修复数据,以便使用正确的数据类型存储日期。