Wie ORDER BY in SQL PIVOT
Momentan habe ich diese Abfrage mit PIVOT erzeugen einer Tabelle wie dieser:
USER | DEC | NOV | OCT
---------------------------------
bob | 3 | 5 | 2
jon | 7 | 0 | 1
tim | 4 | 2 | 6
Was ich gerne tun würde, aber es sieht aus wie eine Strecke zu ORDER BY
die Ergebnisse durch die DEC
Wert absteigend.
Dies ist die Abfrage:
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
Tun piv ORDER BY piv.Searches
gibt einen Fehler, so ist es möglich, um die Spalte festzulegen?
InformationsquelleAutor greener | 2012-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Dsc
?Sorry, es ist
DEC
oder jede andere Spalte, die Sie bestellen möchten.ah ja! In meinem Fall
ORDER BY [12]
. Großen DankDu bist herzlich willkommen.
Ein oder zwei Sätzen zu erklären, was Sie tun und warum es funktioniert, wäre sehr nützlich. Als ich es herausgefunden, aber ein paar Worte hätten geholfen. Ich hatte zu tun 'finde den Unterschied' auf die zwei Stücke von code !
InformationsquelleAutor Mahmoud Gamal