Skip to content Skip to sidebar Skip to footer

Sql Dynamic Pivot For Multiple Columns

DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(Symbol) from Opt FOR XML PATH(''), TYPE ).v

Solution 1:

Just a minor twist to your original. Notice the sub-query/Union All.

Declare@SQLvarchar(max)
Select@SQL= Stuff((SelectDistinct','+ QuoteName(Symbol+'_Price') 
                           +','+ QuoteName(Symbol+'_Quantity') 
                      From   Opt For XML Path('')),1,1,'')   
Select@SQL='Select Date,'+@SQL+' 
                From (
                      Select Date,Item=Symbol+''_Price'',Val=Price From Opt
                      Union All
                      Select Date,Item=Symbol+''_Quantity'',Val=Quantity From Opt
                     ) A
                Pivot (max(Val) For Item in ('+@SQL+') ) p'Exec(@SQL);

Returns

Date         apple_Price    apple_Quantity  banana_Price    banana_Quantity
2016-11-1430152220

Post a Comment for "Sql Dynamic Pivot For Multiple Columns"