SQL server a表ids存在多个id以逗号分隔的字段,求对应b表中的字段同样以逗号分隔

a表
Id 1,2,3
AdvId 1,3,5
CustomerIds ‘1,2’,‘3,5’,‘2,4’
b表
Cust_CustomerID 1,2,3,4,5,6,7,8,9
CusttomerName ‘鸣人’,‘佐助’,‘自来也’,‘纲手’,‘大蛇丸’,‘我爱罗’,‘奇拉比’,‘鼬’,‘长门’

SELECT a.Id,c.CustomerName,a.CustomerIds, stuff(
(
	SELECT ','+b.CustomerName 
	FROM Pact_Customer as b 
	WHERE ','+a.CustomerIds+',' LIKE '%,'+CAST(b.Cust_CustomerID AS varchar(50))+',%'
	FOR XML PATH('')
) ,1,1,'') AS CustomerNames
FROM Pact_Adv as a left join Pact_Customer as c on a.AdvId=c.Cust_CustomerID

参考资料sql server2008数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中


USE tempdb
GO
IF OBJECT_ID('a') IS NOT NULL DROP TABLE a
IF OBJECT_ID('b') IS NOT NULL DROP TABLE b
CREATE TABLE a([序号] int,[主管领导] VARCHAR(300))
CREATE TABLE b([序号] int,[姓名] NVARCHAR(300))
INSERT INTO a ([序号] ,[主管领导]) VALUES (1,'1,2,3')
INSERT INTO a ([序号] ,[主管领导]) VALUES (2,'2,4')
INSERT INTO b ([序号],[姓名]) VALUES (1,N'李一')
INSERT INTO b ([序号],[姓名]) VALUES (2,N'刘二')
INSERT INTO b ([序号],[姓名]) VALUES (3,N'张三')
INSERT INTO b ([序号],[姓名]) VALUES (4,N'李四')
 
SELECT a.[序号],a.[主管领导], stuff(
(
	SELECT ','+b.[姓名] 
	FROM b 
	WHERE ','+a.[主管领导]+',' LIKE '%,'+CAST(b.[序号] AS varchar(50))+',%'
	FOR XML PATH('')
) ,1,1,'') AS [主管领导姓名]
FROM a
 
/*
序号	主管领导	主管领导姓名
1	    1,2,3	    李一,刘二,张三
2	    2,4	        刘二,李四
*/

男儿不展风云志,空负天生八尺躯。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值