在进行表连接查询时发现,有些数据是用逗号连接起来的 不知道该怎么进行表连接查询
例:
原始表数据
id 部门编码
1 23
2 37
3 231
4 23,37
5 37,231
要连接查询的表
id 部门编码对应值
23 A部门
37 B部门
231 C部门
我的SQL:
select a.id,b.部门编码对应值
from
(select id,部门编码
from 原始表数据) a
left join
(select id,部门编码对应值
from 要连接查询的表) b on a.部门编码=b.id
查出来的数据
id 部门编码
1 A部门
2 B部门
3 C部门
4
5
我想要的数据
id 部门编码
1 A部门
2 B部门
3 C部门
4 A部门,B部门
5 B部门,C部门
是用的什么数据库?
你这个数据处理的思路应该是,对于逗号分割的字段内容,转换成列,然后再去进行表连接。但是不同数据库的处理方式不一样
postgresql,可以用unnest结合string_to_array,将指定字符串按指定分隔符转成一列
然后再去join,最后再聚合就行了
select A.ID,LISTAGG(部门编码对应值,',') WITHIN GROUP (ORDER BY 部门编码对应值) from
(select id, unnest(string_to_array(部门编码,',')) 部门编码 from 原始表数据 ) a
left join
(select id,部门编码对应值
from 要连接查询的表) b on a.部门编码=b.id
GROUP BY A.ID
;