【发布时间】:2012-11-25 03:43:15
【问题描述】:
我目前有这个查询使用 PIVOT 生成这样的表:
USER | DEC | NOV | OCT
---------------------------------
bob | 3 | 5 | 2
jon | 7 | 0 | 1
tim | 4 | 2 | 6
我想做但看起来有点牵强的是ORDER BY 的结果由DEC 值递减。
这是查询:
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 *
from
(
select MONTH(Mth.st) Month,
U.USER,
COUNT(S.QRY_ID) Searches
FROM Mth
LEFT JOIN SEARCHES S
on Mth.st <= S.CREATED
and Mth.nd > S.CREATED
LEFT JOIN MEMBERS U
on U.AID = S.AID
GROUP BY YEAR(Mth.st), MONTH(Mth.st), U.HOLDER_LOGIN
) src
pivot
(
sum(searches)
for month in ([12],[11],[10])
) piv
piv ORDER BY piv.Searches 会报错,是否可以指定列?
【问题讨论】:
标签: sql sql-server tsql pivot