我有表格,表格中的日期存储为3列,如下所示
`periodYear`
`periodMonth`
`billDay`
当我想根据DATE(上述三者的组合)生成报告时,这会导致我出现问题。例如
SELECT SUM(amount) as Total,
FROM invoice
WHERE `periodYear` = 2014,
GROUP BY `billDay`,`periodMonth`,`periodYear`
有人可以帮我解释如何解决这个问题吗?
例如,我想在每日基数上列出去年的所有总数,
如果它是一个日期列,我可以按日期分组,但在这种情况下,我不知道该怎么做,因为如果你按照billday分组,.. ,.,那么它根据当天而不是DATE去团队..你明白我的意思吗?
答案 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`
这将按年分组,然后按月分组,然后按天分组。从最小到最小。