我有一个DB表,其记录如下所示,
ID ATTR_NAME ATTR_VALUE 1 ABC DEF 1 GHI JKL 1 MNO PQR
我希望得到一行
ID ABC GHI MNO 1 DEF JKL PQR
答案 0 :(得分:0)
它可能有点脆弱,而不是未来的证明,但Pivot可以给你你想要的东西:
SELECT *
FROM (
SELECT attr_name, attr_value
FROM test
)
PIVOT
( MIN(attr_value)
FOR attr_name IN ( 'ABC','GHI','MNO' )
)
但是,我建议你考虑一下你是否真的需要这种格式,看看你是否能以更自然的格式把它拿出来。
答案 1 :(得分:0)
select ID,
sum(case when attr_name = 'ABC' then attr_value end) as ABC,
sum(case when attr_name = 'GHI' then attr_value end) as GHI,
sum(case when attr_name = 'MNO' then attr_value end) as MNO
from DB
group by ID;