将多个字段汇总到一个记录中的SQL查询

时间:2016-06-17 14:19:49

标签: sql oracle

说我有以下查询:

SELECT     KEY,
           BILL,
           CODE      
FROM       TABLE1
INNER JOIN TABLE2 ON TABLE1.KEY = TABLE2.KEY
ORDER      TABLE1.KEY;

这将输出以下表格

KEY  |  BILL |  CODE
1234 |  AAA  |  ABC
1234 |  AAA  |  BCD
1234 |  AAA  |  DEF

有没有办法查询返回记录: 1234 AAA ABC AAA BCD AAA DEF? 我基本上想要为每个具有相同密钥的记录汇总每个输出。这是在Oracle。

1 个答案:

答案 0 :(得分:3)

您可以使用listagg

执行此操作
SELECT KEY,
       LISTAGG(BILL||' '||CODE, ' ') WITHIN GROUP (ORDER BY BILL||' '||CODE)     
   FROM TABLE1
   INNER JOIN TABLE2
   ON TABLE1.KEY = TABLE2.KEY
   ORDER TABLE1.KEY
GROUP BY KEY