【发布时间】:2012-12-06 22:37:44
【问题描述】:
我有这个按月分组搜索的 SQL 查询:
; with Mth (st, nd) as (
select DATEADD (M, datediff (m, 0,'2012-09-01'), 0),
DATEADD (M, DATEDIFF (m, 0, '2012-09-01') + 1, 0)
union all
select DATEADD (m, 1, st),
DATEADD (m, 1, nd)
from Mth
where nd <= DATEADD (m, datediff (m, 0, getdate()), 0)
)
select MONTH(Mth.st) Month,
COUNT(S.QRY_ID) Searches
FROM Mth
LEFT JOIN SEARCHES S
on Mth.st <= S.CREATED
and Mth.nd > S.CREATED
GROUP BY YEAR(Mth.st), MONTH(Mth.st)
ORDER BY 1,2
结果如下所示:
Month | Searches
---------------------
9 | 21
10 | 32
11 | 18
我正在尝试弄清楚如何使用PIVOT 来实现这一目标:
9 | 10 | 11
-----------------------
21 | 32 | 18
谁能告诉我怎么做?
【问题讨论】:
标签: sql sql-server tsql pivot common-table-expression