2012-06-14 35 views
2

我有一个T-SQL查询,如下所示查询保存搜索数据的表并获取该搜索小时的行的搜索小时数和计数。SQL Server PIVOT表中的小时数

SELECT DATEPART(HOUR, aps.CreatedOn) AS SearchHour, COUNT(*) AS ItemCOUNT 
FROM ASearches aps 
GROUP BY DATEPART(HOUR, aps.CreatedOn) 
ORDER BY SearchHour; 

正如你所看到的,这不会产生很好的结果。但是,我知道如果我为此使用数据透视表并将小时数作为列名称,那会更好。我尝试过,但我一直失败。

任何想法如何?

回答

7

事情是这样的:

SELECT * 
    FROM (SELECT DATEPART(HOUR, CreatedOn) AS SearchHour 
      FROM ASearches) aps 
PIVOT (COUNT([SearchHour]) FOR SearchHour IN 
     ([0], [1], [2], [3], [4], [5], 
      [6], [7], [8], [9], [10], [11], 
      [12], [13], [14], [15], [16], [17], 
      [18], [19], [20], [21], [22], [23])) as pvt 
+1

啊,很漂亮。有一个错误,我纠正了它。谢谢! – tugberk

+0

啊,是啊,对不起 - 我在一个数据库上工作,然后用你原来的名字编辑 - 错误地:)谢谢 –