我有一个包含三列的表,分别是“部件号”,“规格”和“值”,我需要创建一个表,其中所有数据都为VARCHAR,其中“规格”列中的每个值都显示为标题。 >
我尝试使用PIVOT,但是我不太了解它(我是新手);我正在使用SQLServer。
以下是原始表中的第一行:
Partnumber|Specifications|Value|
181504825 |Rotation |CW |
1541 |Belt Width (_)|7/16 |
156938 |Depth (mm) |73 |
1522231 |Grooves |6 |
1522236 |Grooves |4 |
1522348 |Grooves |4 |
1541 |Grooves |1 |
181504825 |Height (mm) |107.95|
156938 |Inlet (mm) |11.5 |
我需要创建一个像这样的新表:
Partnumber|Belt Width (_)|Depth (mm)|Grooves |Height (mm)|Inlet (mm)|Rotation|
1522231 | | |6 | | | |
1522236 | | |4 | | | |
1522348 | | |4 | | | |
1541 |7/16 | |1 | | | |
156938 | |73 | | |11.5 | |
181504825 | | | |107.95 | |CW |
每个部件号和标题必须不重复,并且顺序显示,某些部件号可以不显示信息,以后我可以删除该行。 我想提到的是,“规范”列在删除重复项后包含981个标题。
答案 0 :(得分:0)
使用条件聚合
select Partnumber, max(case when Specifications='Rotation' then value end) as Rotation,
max(case when Specifications='Belt Width (_)|' then value end) as BeltWidth (_)|,
max(case when Specifications='Depth (mm)' then value end) as Depthmm,
max(case when Specifications='Grooves' then value end) as Grooves,
max(case when Specifications='Height (mm)' then value end) as Height,
max(case when Specifications='Inlet (mm)' then value end) as Inlet,
max(case when Specifications='Belt Width (_)' then value end) as belt
from table_name group by Partnumber