使用SQLServer 2008r2 - 我有一张表,每小时插入一条记录。我查询的相关列是currentScore(int)和obsDate(smallDateTime)。我希望得到五天的记录。今天,今天的两天(从午夜开始)和未来两天。因此,如果其6月20日我想19年6月18日,20,21和22,我成功地这样做,就像这样:按天分组和条件计数问题
select dateadd(DAY,0, datediff(day,0, obsDate)) as theDate,
count(currentScore) as numOfScores
from diseaseScores
where siteID=8315 and obsDate > dateAdd(day, -2, (SELECT CONVERT(DATETIME,
CONVERT(DATE, CURRENT_TIMESTAMP)) + '00:00'))
group by dateadd(DAY,0, datediff(day,0, obsDate))
order by dateadd(DAY,0, datediff(day,0, obsDate))
我的记录集看起来像这样:
theDate numOfScores
2017-06-18 00:00:00.000 23
2017-06-19 00:00:00.000 22
2017-06-20 00:00:00.000 24
2017-06-21 00:00:00.000 24
2017-06-22 00:00:00.000 9
我想再增加三列,将计算一定范围内的currentScore数量。像这样的东西
CASE
WHEN currentScore < 8 THEN COUNT(where currentScore < 8) as Low
WHEN currentScore > 8 and < 17 THEN COUNT(where currentScore > 8 and < 17) as Med
WHEN currentScore > 17 THEN COUNT(where currentScore > 17) as High
我可以用select case来做这个吗?达到此目的的最佳方法是什么?
在此先感谢
这里是我想达到的效果:
theDAte numOfScores low med high
2017-06-18 23 23 0 0
2017-06-19 22 22 0 0
2017-06-20 24 5 19 0
2017-06-21 24 0 24 0
2017-06-22 9 0 9 0
编辑您的问题并显示您想要达到的结果。 –