我有一个表,其中日期存储为表中的3列,如下所示

`periodYear`
`periodMonth`
`billDay`

这就给我带来了问题,当我想基于以上三者的组合生成报告时。例如
SELECT SUM(amount) as Total,
FROM invoice
WHERE `periodYear` = 2014,
GROUP BY `billDay`,`periodMonth`,`periodYear`

有人能帮我解释一下怎么解决这个问题吗?
例如,我想把去年的总数按天列出,
如果是日期栏,我可以按日期分组,但在这种情况下,我不知道该怎么做,因为如果按billday分组,那么它将按日期分组,而不是按日期分组。。你明白我的意思吗?

最佳答案

您可以将这些值连接在一起,然后对其进行分组:

SELECT SUM(amount) as Total FROM invoice
WHERE periodYear=2014
GROUP BY CONCAT(billDay, '-', periodMonth, '-', periodYear)

或者,如果要转换为和实际日期格式,以便以后更容易排序:
SELECT SUM(amount) as Total FROM invoice
WHERE periodYear=2014
GROUP BY CONCAT(periodYear,
                '-',
                LPAD(periodMonth, 2, '00'),
                '-',
                LPAD(billDay, 2, '00')
)

关于mysql - mysql GROUP BY多列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26008520/

10-10 03:22