2015-06-21 74 views
0

我与这些列时间戳[日期时间],FromSysId [INT],CrUSSDCnt [INT]转换整数行转换成列虽然分组由日期

 TimeStamp   FromSysId   CrUSSDCnt 
2015-06-18 18:58:15.380  25     7 
2015-06-18 19:45:17.130  21     8 
2015-06-18 20:43:18.920  22     15 
2015-06-18 21:34:33.090  25     6 
2015-06-18 22:55:33.317  22     10 

我下表要显示的每个FromSysId AS柱而计数每个FromSysId的CrUSSDCnt柱上并通过小时这样输出分组TimeStime:

 TimeStamp   Sys25 Sys22  Sys21  
2015-06-18 18:00:00  2  1   0 
2015-06-18 19:00:00  4  6   3 
2015-06-18 20:00:00  0  5   6 
2015-06-18 21:00:00  0  7   2 
2015-06-18 22:00:00  1  0   4 

我尝试使用枢轴或联合和我未能两者来概括像这样。 任何帮助。

+0

请修改您的问题与您的查询不起作用。 –

回答

0

这个问题的难点在于提取时间。这里有一种方法:

select dateadd(hour, 0, datediff(hour, 0, timestamp)) as ToTheHour, 
     sum(case when FromSysId = 25 then CrUSSDCnt else 0 end) as Sys25, 
     sum(case when FromSysId = 22 then CrUSSDCnt else 0 end) as Sys22, 
     sum(case when FromSysId = 21 then CrUSSDCnt else 0 end) as Sys21 
from table t 
group by dateadd(hour, 0, datediff(hour, 0, timestamp)) 
order by ToTheHour; 

其余的只是有条件的聚合。

+0

请阅读其他答案,我解释了这个问题,谢谢 –

+0

@AbdallaOmar。 。 。如果你有问题,你应该问它作为*问题*而不是答案。问另一个问题,如果你还需要帮助。 –