您可以使用模运算来获得尾随两位数(当数字除以 100 时,它们是余数),然后假设您希望money
在数据按月份“分组”时求和:
SELECT month_x % 100 AS Month, SUM(money) AS TOTAL
FROM testa
GROUP BY Month
ORDER BY Month ASC;
或者,您可以使用依赖 MySQL 的隐式类型转换并使用其字符串函数:
SELECT RIGHT(month_x, 2) AS Month, SUM(money) AS TOTAL
FROM testa
GROUP BY Month
ORDER BY Month ASC;
更新
正如@shiplu.mokadd.im 所说,要显示每个月(即使是那些您没有数据的),您需要从临时表中获取数字 1 到 12。但是,您可以使用以下命令在查询中创建这样一个临时表UNION
:
SELECT 1
UNION SELECT 2
UNION SELECT 3 -- etc
所以:
SELECT Month, Sum(money) AS TOTAL
FROM testa
RIGHT JOIN (
SELECT 1 AS Month
UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11
UNION SELECT 12
) months ON testa.month_x % 100 = months.Month
GROUP BY Month;
但是我会注意到通常不会在数据库中执行此操作,因为它确实属于表示层:从您访问数据库的任何语言中,您都会循环1...12
并假设TOTAL
是否0
没有相应的记录在结果集中。