2017-07-04 67 views
0

我有以下部分的sql語句來支持動態列。列(ClosingDate)的數量是可變的:數據透視表排序日期時間列

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(ClosingDate + '_'+ c.col) 
         from #TmpT 
         cross apply 
         (
         select 'Cnt' col 
         union all 
         select 'TT' 
        ) c 
      FOR XML PATH('') , TYPE   
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

的問題是,ClosingDate列地轉化爲varchar,他們被排序爲varchar,而不是date

有沒有辦法訂購datetime?謝謝!

回答

0

你可以試試先將它們轉化爲自己日期:

select @cols = STUFF((SELECT distinct ',' + 
          QUOTENAME(CONVERT(VARCHAR(8),ClosingDate,112) + '_'+ c.col) 
         from #TmpT 
         cross apply 
         (
         select 'Cnt' col 
         union all 
         select 'TT' 
        ) c 
      FOR XML PATH('') , TYPE   
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 
+0

它實際工作。我已經以CONVERT(VARCHAR(8),ClosingDate,112)格式傳遞了ClosingDate字段,並且查詢仍然將日期命令定義爲varchar,但由於格式爲yyyymmdd,所以日期按照嚴格的順序排列。非常感謝! – gae