DB2查询,将结果分组并允许不同的值成为逗号分隔的值

问题描述

我有一个非常简单的查询,该查询返回的结果有时会包含所有列,但所有列都是相同的,就像这样:

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;