2016-07-25 9 views
0

Kann mir jemand die Bedeutung des' Symbols im zweiten Block erklären? Ich habe diesen alten Post gefunden, der sich mit Pivot beschäftigt, und das Set @query wird in diese Symbole eingefügt, während das erste nicht (das select @cols) ist. Was bedeutet das? Warum muss es so gemacht werden?Bedeutung von 'in SQL Pivot

Convert Rows to columns using 'Pivot' in SQL Server

DECLARE @cols AS NVARCHAR(MAX), 
    @query AS NVARCHAR(MAX) 

select @cols = STUFF((SELECT ',' + QUOTENAME(Week) 
        from yt 
        group by Week 
        order by Week 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 

set @query = 'SELECT store,' + @cols + ' from 
      (
       select store, week, xCount 
       from yt 
      ) x 
      pivot 
      (
       sum(xCount) 
       for week in (' + @cols + ') 
      ) p ' 

execute(@query); 
+0

"Warum muss es so gemacht werden?" Bei einer dynamischen Anzahl von Spalten in einem Pivot muss dynamisches SQL verwendet werden. Die @Cols ist einfach die Liste der Spalten, die der Benutzer drehen möchte. – xQbert

Antwort

1

Der zweite Block dynamische Abfrageauswertung verwendet. Die ' Symbole sind einfach String-Literal-Trennzeichen.

+0

Ok, so einfach. Danke – SQLStarter

+0

Sie sind herzlich willkommen. –