SQL:将3行合并为1

时间:2013-12-26 07:17:51

标签: sql select join

有一个表格,其中每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,但无法完成。请帮忙。

1 个答案:

答案 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

SQL Fiddle demo