具有多个列的mysql分组方式

具有多个列的mysql分组方式,mysql,Mysql,我有一个表,其中日期存储为表中的3列,即如下所示 `periodYear` `periodMonth` `billDay` 这给我带来了很多问题,当我想根据上述三个日期的组合生成报告时。比如说 SELECT SUM(amount) as Total, FROM invoice WHERE `periodYear` = 2014, GROUP BY `billDay`,`periodMonth`,`periodYear` 有人能帮我解释一下如何解决这个问题吗 例如,我想列出去年每天的

我有一个表,其中日期存储为表中的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')
)

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

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')
)
试试这个

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

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

我认为你想要的和你尝试过的正好相反

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

这将首先按年分组,然后按月分组,然后按天分组。从大到小。

我认为你想要的与你尝试过的恰恰相反

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

这将首先按年分组,然后按月分组,然后按天分组。从大到小。

您遇到了什么问题?我相信那些多余的逗号是打字错误,对吗?这些列的类型是什么?基于数字还是基于字符?例如,我想列出去年账单日的所有总计,如果是日期列,我可以只按日期分组,但在这种情况下,我不知道怎么做,因为如果你按账单日分组,那么它将根据日期而不是日期分组。。你明白我的意思吗?smallint(4)都是整数你遇到了什么问题?我相信那些多余的逗号是打字错误,对吗?这些列的类型是什么?基于数字还是基于字符?例如,我想列出去年账单日的所有总计,如果是日期列,我可以只按日期分组,但在这种情况下,我不知道怎么做,因为如果你按账单日分组,那么它将根据日期而不是日期分组。。你明白我的意思吗?smallint(4)都是整数