Sql 将行转换为列并保留数据对

Sql 将行转换为列并保留数据对,sql,sql-server,pivot,Sql,Sql Server,Pivot,MSSQL中存在以下问题:我有一个表,其中包含4列 示例表: JunctionId | type| color| value 1 | a | red | 5| 1 | b | green | 10| 2 | a | orange | 40| 2 | b | yellow | 35| 3 | a | blue | 6| 3 | b | cyan | 9| 现在,我想得到以下结果: 1 | a | red | 5 | b | green | 10 2 | a | orang

MSSQL中存在以下问题:我有一个表,其中包含4列

示例表:

JunctionId | type| color| value
 1 |  a | red | 5|
 1 |  b | green | 10|
 2 |  a | orange | 40|
 2 |  b | yellow | 35|
 3 |  a | blue | 6|
 3 |  b | cyan | 9|
现在,我想得到以下结果:

1 | a | red | 5 | b | green | 10
2 | a | orange | 40 | b | yellow | 35
3 | a | blue | 6 | b | cyan | 9
我尝试使用PIVOT,但由于值不同,它返回了多行。我会使用selfjoin,但我有12种不同的“类型”。任何想法都将受到欢迎

(注意:我无法使用此stackoverflow表内容…抱歉)

自连接时间

select a1.junctionid, 
       a1.type as a_type,
       a1.color as a_color,
       a1.value as a_value, 
       a2.type as b_type, 
       a2.color as b_color, 
       a2.value as b_value
from MyTable a1
inner join MyTable a2
on a1.junctionid = a2.junctionid
where a1.type = 'a'
and a2.type = 'b'

是的,但正如我所说的,我真的不想使用self-join,因为我有12种不同的类型。但是看起来我要去,因为我不能使用程序:/不过,谢谢你的回答。