我有如下表: 日期,小时,事故如何使用拆分列到多个值另一个
我得事故数量在白天和黑夜。
这里是如何得到它一天
选择日期,SUM(事故)AS '在天' 从车上其中date> ='2012-01-01 'AND DATE < =' 2012- 01-31' 和小时> = 00:00:00“和小时< =“11:59:59” GRUUP BY日期
如何修改查询,也有在晚上的事故?
我有如下表: 日期,小时,事故如何使用拆分列到多个值另一个
我得事故数量在白天和黑夜。
这里是如何得到它一天
选择日期,SUM(事故)AS '在天' 从车上其中date> ='2012-01-01 'AND DATE < =' 2012- 01-31' 和小时> = 00:00:00“和小时< =“11:59:59” GRUUP BY日期
如何修改查询,也有在晚上的事故?
我在这里打招呼,但;
SELECT date,SUM(CASE WHEN HOUR>='00: 00:00' AND HOUR<=' 11:59:59
THEN accidents ELSE 0 END)
AS 'at day',
SUM(CASE WHEN HOUR>='12: 00:00' AND HOUR<=' 23:59:59
THEN accidents ELSE 0 END) AS 'at night'
FROM vehicles
WHERE DATE>='2012-01-01 'AND DATE<='2012-01-31'
GROUP BY date
你可以使用一个union
SELECT date, SUM(accidents) AS 'at day', '' as 'at night'
FROM vehicles
WHERE DATE>='2012-01-01 ' AND DATE<='2012-01-31'
AND HOUR>='00: 00:00' AND HOUR<=' 11:59:59 '
GROUP BY date
union
SELECT date, '', as 'at day', SUM(accidents) AS 'at night'
FROM vehicles
WHERE DATE>='2012-01-01 ' AND DATE<='2012-01-31'
AND HOUR>='12: 00:00' AND HOUR<=' 23:59:59 '
GROUP BY date
或使用case
:
SELECT date, '', as 'at day',
SUM(accidents) AS 'sum_accidents',
case `HOUR` between '00: 00:00' and '11:59:59' THEN 'night' ELSE 'day' END as 'night_or_day'
FROM vehicles
WHERE DATE>='2012-01-01 ' AND DATE<='2012-01-31'
GROUP BY date
嘿,谢谢,它的工作原理! (第一个解决方案),但我怎么能在第一行中得到这个空的空间? http://screenshooter.net/0562655/06_03_2012__09_14_41并得到它像这样http://screenshooter.net/0562655/06_03_2012__09_17_38?我尝试了UNION ALL,但它不起作用 – breq 2012-03-06 08:14:58
如果您使用第二种解决方案,您将在一列中加上一个额外的列,指示它是在白天还是在晚上 – 2012-03-06 08:23:33
在夜间和在天的意思是整天,所以才删除小时条件
SELECT date, SUM(accidents) AS 'at day' FROM vehicles WHERE DATE>='2012-01-01 'AND DATE<='2012-01-31' GRUUP BY date
你可以省略HOUR上的WHERE
条件和GROUP BY
SELECT date,
IF(HOUR BETWEEN '00:00:00' AND '11:59:59','day','night') as period,
SUM(accidents) as numAccidents
FROM vehicles
WHERE Date >= '2012-01-01' AND DATE <= '2012-01-31'
GROUP BY Date, IF(HOUR BETWEEN '00:00:00' AND '11:59:59','day','night')
此计算“夜”或使用IF(condition,then,else)
结构“天”(注意:根据您的时间列的类型,你可能必须使用而不是BETWEEN
)。
然后,它会根据日期和日/夜进行分组,以获得每天和周期的总和。
谢谢,作品gr8! – breq 2012-03-06 09:21:47