Sni*_*pet 2 sql t-sql sql-server pivot
物品表:
| Item | Qnty | ProdSched |
| a | 1 | 1 |
| b | 2 | 1 |
| c | 3 | 1 |
| a | 4 | 2 |
| b | 5 | 2 |
| c | 6 | 2 |
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用SQL输出它SELECT?
| Item | ProdSched(1)(Qnty) | ProdSched(2)(Qnty) |
| a | 1 | 4 |
| b | 2 | 5 |
| c | 3 | 6 |
Run Code Online (Sandbox Code Playgroud)
Tar*_*ryn 11
你可以用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
Run Code Online (Sandbox Code Playgroud)
如果列数未知,则可以使用动态数据透视表:
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)
Run Code Online (Sandbox Code Playgroud)