您可以使用PIVOT
这一点。如果你有一个已知的数值进行改造的,那么你可以硬编码通过静态支点的值:
select item, [1] as ProdSched_1, [2] as ProdSched_2
from
(
select item, qty, prodsched
from yourtable
) x
pivot
(
max(qty)
for prodsched in ([1], [2])
) p
看到SQL Fiddle with Demo
如果列数是未知的,那么你可以使用一个动态透视:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(prodsched)
from yourtable
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT item,' + @cols + ' from
(
select item, qty, prodsched
from yourtable
) x
pivot
(
max(qty)
for prodsched in (' + @cols + ')
) p '
execute(@query)
看到SQL Fiddle with Demo
请学习如何使用Shift键。在所有帽子打字都被认为是张嘴(而且很粗鲁)。所有小写字母打字都会让阅读困难。他们发明了Shift键是有原因的。谢谢。 –
对不起。谢谢 – Snippet
可能重复[获取ROWS作为列(SQL Server动态PIVOT查询)](http://stackoverflow.com/questions/12074939/get-rows-as-columns-sql-server-dynamic-pivot-query) – RichardTheKiwi