SQL Server 2008中需要计数查询

时间:2013-12-24 17:49:05

标签: sql-server datetime count

ID          Time                    Status
----------- ----------------------- --------------------------------------------------
1           2013-12-24 00:00:00     on
2           2013-12-25 00:00:00     on
3           2013-12-26 00:00:00     on
4           2013-12-27 00:00:00     on
5           2013-12-28 00:00:00     on
6           2013-12-29 00:00:00     on
7           2013-12-30 00:00:00     on
8           2013-12-31 00:00:00     on
9           2013-12-24 00:00:00     off
10          2013-12-25 00:00:00     off
11          2013-12-27 00:00:00     off
12          2013-12-27 00:00:00     on
13          2013-12-27 00:00:00     off
14          2013-12-27 00:00:00     on
15          2013-12-27 00:00:00     off
16          2013-12-28 00:00:00     on
17          2013-12-28 00:00:00     off
18          2013-12-28 00:00:00     on
19          2013-12-29 00:00:00     off
20          2013-12-29 00:00:00     on
21          2013-12-30 00:00:00     off
22          2013-12-30 00:00:00     on
23          2013-12-30 00:00:00     off
24          2013-12-30 00:00:00     on
25          2013-12-30 00:00:00     off
26          2013-12-31 00:00:00     on
27          2013-12-31 00:00:00     off
28          2013-12-31 00:00:00     on
29          2013-12-31 00:00:00     off
30          2013-12-31 00:00:00     on
31          2013-12-31 00:00:00     off

我的表格名称为abc,我希望按日期计算日期和状态明确排列数据

2 个答案:

答案 0 :(得分:0)

Select time, SUM(on_cnt),SUM(off_cnt) FROM
(select time,[on] as on_cnt,[off] as off_cnt from table1
pivot 
(
 count(Status)
 for Status in ([on],[off])
) as p) as st
GROUP BY time

<强> Fiddle

答案 1 :(得分:0)

这样的东西
SELECT 
[Time], 
SUM(CASE WHEN [Status] = 'On' THEN 1 ELSE 0 END) CntON,
SUM(CASE WHEN [Status] = 'Off' THEN 1 ELSE 0 END) CntOff
FROM Table
GROUP BY [Time]