2012-06-14 3 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

Ahh yeah, извините - я сделал это, работая над БД, которую я имел, а затем отредактировал обратно в ваших оригинальных именах - неправильно :) Спасибо –