2017-07-04 6 views
0

Ich habe den folgenden Teil der SQL-Anweisung, um dynamische Spalten zu schwenken. Die Anzahl der Spalten (ClosingDate) variabel:Pivot-Tabelle sortieren datetime Spalte

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,'') 

Das Problem ist, dass ClosingDate Spalten varchar konvertiert werden und sie werden als varchar, nicht als date bestellt.

Gibt es eine Möglichkeit, um datetime zu bestellen? Vielen Dank!

Antwort

0

Sie könnten versuchen, sie zu Daten konvertieren Sie sich zuerst:

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

Es tatsächlich funktioniert. Ich übergebe das ClosingDate-Feld bereits im Format CONVERT (VARCHAR (8), ClosingDate, 112), und die Abfrage sortiert die Daten immer noch als varchar, aber da das Format JJJJMMTT ist, werden die Daten sekundär geordnet. Danke vielmals! – gae