DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Symbol)
from Opt
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Date,' + @cols + ' from
(
select Date, Symbol, Price
from Opt
)x
pivot
(
max(Price)
for Symbol in (' + @cols + ')
) p'
execute(@query);
我得到这个从上面的代码:SQL动态枢纽多个列
Symbols(varchar50) Date price quantity
apple 14/11/2016 30 15
banana 14/11/2016 22 20
我需要这样的
Date apple_price apple_quantity banana_price banana_quantity
14/11/2016 30 15 22 10
从上面的代码中,我得到的只是价格
您的代码让我害怕。使用参数化来避免SQL注入。此外,SQL有sys表,可以使这种动态和便携式(sys.tables和sys.columns浮现在脑海)。 –