从多列返回唯一的行

时间:2016-08-30 18:53:03

标签: sql oracle select plsql

如果主键相等,我正在尝试返回单个描述,例如,我有这个回复:

CD_TABLE | DS_TABLE | DS_ANOTHER_TABLE
------   | ------   | ------
1        | TEST-01  | TEST-X 
2        | TEST-02  | TEST-Y
2        | TEST-02  | TEST-W
3        | TEST-03  | TEST-Z

由于第二列和第三行在第一列是相同的信息,有没有办法以这种方式返回?

CD_TABLE | DS_TABLE | DS_ANOTHER_TABLE
------   | ------   | ------
1        | TEST-01  | TEST-X 
2        | TEST-02  | TEST-Y, TEST-W
3        | TEST-03  | TEST-Z

1 个答案:

答案 0 :(得分:4)

listagg功能似乎符合要求:

SELECT   cd_table, ds_table,
         LISTAGG(ds_another_table, ', ') WITHIN GROUP (ORDER BY ds_another_table)
FROM     mytable
GROUP BY cd_table, ds_table