对于数据之间有逗号的数据应该怎么进行表连接查询(SQL)

在进行表连接查询时发现,有些数据是用逗号连接起来的 不知道该怎么进行表连接查询
例:
原始表数据
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,将指定字符串按指定分隔符转成一列

img

然后再去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
;

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632