我有一张像这样的桌子
OutputID | Name | Value |
---------------------------------------------
15417 | Material code | ABC123 |
15417 | Chemical Name | ABCdef |
15417 | BatchNo | BID213 |
15417 | Container no | 12 |
15417 | Notrequired1 | xxx |
15417 | Notrequired2 | yyy |
需要的结果
OutputID | BatchNo | Name | Value |
--------------------------------------------------------------
15417 | BID213 | Material code | ABC123 |
15417 | BID213 | Chemical Name | ABCdef |
15417 | BID213 | Container no | 12 |
基本上必须选择OutputID,Name和Value,其中材料代码中的名称,化学名称,容器编号和仅旋转BatchNo。我遇到的问题是我可以使枢轴工作或选择名称和值。我无法做到这两点。非常感谢任何帮助。
到目前为止我的尝试。
Select Outputid, [BatchNo]
from
(
select outputid, name, value from ##temp_table_unpacked
where name in ('Material Bar Code','Chemical Name','Container No')
)
AS S
PIVOT
(
MAX([Value]) FOR [Name] IN([BatchNo])
) As P;
Select Outputid, [BatchNo], Name, Value
from
(
select outputid, name, value from ##temp_table_unpacked
where name in ('Material Bar Code','Chemical Name','Container No')
)
AS S
PIVOT
(
MAX([Value]) FOR [Name] IN([BatchNo])
) As P;
我正在使用SQL Server 2014。
答案 0 :(得分:1)
这似乎可以做你想要的:
select tt.outputid, tt.batchno, tt.name, tt.value
from (select tt.*,
max(case when name = 'BatchNo' then value end) over (partition by outputid) as batchno
from ##temp_table_unpacked tt
) tt
where name in ('Material Bar Code', 'Chemical Name', 'Container No');