Я нахожусь на SQL Server 2008, и у меня есть таблица, содержащая метрики WA следующей формы:
CREATE TABLE #VistitorStat
(
datelow datetime,
datehigh datetime,
name varchar(255),
cnt int
)
Данные за два дня в таблице выглядят так:
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 New Visitor 221
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 Unique Visitors 225
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 Return Visitors 0
2009-07-25 00:00:00.000 2009-07-26 00:00:00.000 Repeat Visitors 22
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 New Visitor 263
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 Unique Visitors 269
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 Return Visitors 4
2009-07-26 00:00:00.000 2009-07-27 00:00:00.000 Repeat Visitors 38
Я хочу сгруппировать по дням и перевести метрики в строку. Примеры использования оператора PIVOT
, которые я могу найти, показывают только агрегацию на основе функции агрегирования SUM
и MAX
. Предположительно мне нужно передать семантику GROUP BY
оператору PIVOT
- примечание: я не могу найти никаких четких примеров / документации о том, как этого добиться. Может кто-нибудь опубликовать правильный синтаксис этого - с использованием оператора PIVOT - этого запроса.
Если это невозможно с помощью pivot - можете ли вы придумать элегантный способ написания запроса? Если нет, то мне просто нужно сгенерировать данные в транспонированном виде.
Редактировать сообщение ответа:
Я пришел к выводу, что оператор разворота является нелегким (настолько, что я считаю это синтаксическим взломом) - я решил проблему, создав данные транспонированным образом. Я приветствую комментарии.