0
我有以下查詢動態轉動一些行的信息:行進行排序
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
select @cols = STUFF((SELECT ',' + QUOTENAME(convert(char(50), ScheduleEndTime, 120))
FROM metersNotRead
group by ScheduleEndTime
order by ScheduleEndTime DESC
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ScheduleName, MeterID, CurrentGK,
' + @cols + ' from
(
select ScheduleName, MeterID, CurrentGK, ScheduleEndTime, ''Y'' flag
from metersNotRead
) x
pivot
(
max(flag)
for ScheduleEndTime in (' + @cols + ')
) p
order by ' + @cols +' DESC
'
execute(@query)
它給了我正確的結果,但我想知道我怎麼可以通過第一動態列行進行排序,然後第二個,依此類推,直到所有動態列都被排序爲止。
我有現在的結果是這樣的:
ScheduleName MeterID CurrentGK FirstDynamicCol SecondDynamicCol ETC
textName1 exampleID1 -- NULL Y
taxtName2 exampleID2 -- Y NULL
我想他們是這樣的:
ScheduleName MeterID CurrentGK FirstDynamicCol SecondDynamicCol ETC
textName2 exampleID2 -- Y NULL
taxtName1 exampleID1 -- NULL Y
謝謝@JiggsJedi讓我更接近我需要的東西。但是,我真的希望它按所有動態列排序。如果這些列是'2014-06-19''2014-06-18''2014-06-17'我希望order by子句是'order by'2014-06-19'DESC',2014-06 -18'DESC,'2014-06-17'DESC「。我使用'select cols'中的代碼爲所有動態列設置'select orderby',但我不確定如何在每列之後獲得'DESC'。 – cj1689262
已被更新回答。如果它不正確,在設置它之後立即查看它正在用PRINT @ ORDERBY進行的操作(只需運行到那裏),然後可以根據需要調整它。 – JiggsJedi
非常完美!儘管我不得不從代碼的查詢部分刪除'DESC',否則由於額外的'DESC',我得到了語法錯誤。我更新了您的代碼並已接受您的答案。感謝您的幫助! – cj1689262