mysql GROUP BY有多个列

时间:2014-09-24 04:23:50

标签: mysql

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

`periodYear`
`periodMonth` 
`billDay`

当我想根据DATE(上述三者的组合)生成报告时,这会导致我出现问题。例如

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

有人可以帮我解释如何解决这个问题吗?

例如,我想在每日基数上列出去年的所有总数,

如果它是一个日期列,我可以按日期分组,但在这种情况下,我不知道该怎么做,因为如果你按照billday分组,.. ,.,那么它根据当天而不是DATE去团队..你明白我的意思吗?

3 个答案:

答案 0 :(得分:3)

试试这个,

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

答案 1 :(得分:1)

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

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')
)

答案 2 :(得分:0)

我认为你想要的只是与你所尝试过的相反。

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

这将按年分组,然后按月分组,然后按天分组。从最小到最小。