问题描述
我有一个非常简单的查询,该查询返回的结果有时会包含所有列,但所有列都是相同的,就像这样:
name | address | item | date
---------------------------------------------
Bob 123 East st A123 07-02-2020
Bob 123 East st A213 07-02-2020
我想尝试使之基本上可以将结果分组,但这些项目将是逗号分隔的列表,如下所示:
name | address | item | date
----------------------------------------------------
Bob 123 East st A123,A213 07-02-2020
我的查询是:
SELECT NAME,ADDRESS,ITEM,DATE
FROM ITEM_TABLE
WHERE DATE <= current_date
GROUP BY NAME,DATE
有没有一种方法可以更改此设置,以便它仍按其他列分组,但用逗号将一行中的内容分开?
解决方法
您正在描述listagg()
:
select name,address,listagg(item,',') within group (order by item) as items,date
from t
group by name,date;