如果我有下表(仅作为示例):
表1:
id | 纳税年度
1 | 2000
1 | 2001
2 | 2001
表2:
id | 纳税年度 | 价值
1 | 2000 |一个
1 | 2000 | 2000
1 | 2000 |
如何连接两个表,以便可以像这样将多个值显示到一行中?
id | 纳税年度 | 价值
1 | 2000 |甲、乙、丙
1 | 2001 | ---
2 | 2001 | ---
我使用的是 db2,因此无法使用某些函数,例如 GROUP_CONCAT()。 LIST_AGG() 是一个选项吗?或者有没有办法拥有嵌套的 select 语句并以某种方式连接结果,就像这样?
select
id
,concat((select value
from database.table2 tab2
join database.table1 tab1
on tab1.id=tab2.id))
from database.table1
您可以使用
LISTAGG()
,如下所示:
select a.id, a.tax_year,
listagg(b.value, ',') within group (order by b.value) as value
from table1 a
left join table2 b on b.id = a.id and b.tax_year = a.tax_year
group by a.id, a.tax_year;
结果:
ID TAX_YEAR VALUE
--- --------- -----
1 2000 a,b,c
1 2001 null
2 2001 null
请参阅 db<>fiddle 处的运行示例。