有一个表格,其中每3行一起代表一个有意义的对象,如下所示:
id colA key ...
ida value1 keyA ...
ida value2 keyB ...
ida value3 keyC ...
idb value4 keyA ...
idb value5 keyB ...
idb value6 keyC ...
它应该收敛如下(colA到keyA,colB到keyB,colC到keyC):
id colA colB colC ...
ida value1 value2 value3 ...
idb value4 value5 value6 ...
完全不知道如何撰写合适的SQL。它可能是两个LEFT JOIN,但无法完成。请帮忙。
答案 0 :(得分:2)
您可以使用类似的东西(这是SQL Server语法):
select distinct id,
(select top 1 colA from table1 t
where t.[key] = 'keyA' and t.id = table1.id) as colA,
(select top 1 colA from table1 t
where t.[key] = 'keyB' and t.id = table1.id) as colB,
(select top 1 colA from table1 t
where t.[key] = 'keyC' and t.id = table1.id) as colC
from table1