求连接字典表语句

bigmingming 2015-07-30 09:01:39
ID CODE
1 00000002,00000003,00000004

表B 字典表

CODE Name
00000002 AAA
00000003 BBB
00000004 CCC


想连接后显示成

ID CODE Name
1 00000002,00000003,00000004 AAA,BBB,CCC
...全文
126 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigmingming 2015-07-30
  • 打赏
  • 举报
回复
select A.*,B.[Name] from A, (select distinct stuff((select ','+code from B for xml path('')),1,1,'') as Code,stuff((select ','+name from B for xml path('')),1,1,'') as [Name] from B) B where A.Code=B.Code 有问题,字典表如何增加到 SELECT '00000002' AS CODE ,'AAA'AS NAME UNION ALL SELECT '00000003' AS CODE ,'BBB'AS NAME UNION ALL SELECT '00000004' AS CODE ,'CCC'AS NAME UNION ALL SELECT '00000005' AS CODE ,'DDD'AS NAME
Pact_Alice 2015-07-30
  • 打赏
  • 举报
回复
CREATE TABLE # ( ID INT, CODE VARCHAR(30) ) INSERT INTO # SELECT 1,'00000002,00000003,00000004' CREATE TABLE #t4 ( ID INT, CODE VARCHAR(30) ) --定义变量 DECLARE @sql VARCHAR(30), @i INT --给变量赋值 SET @sql=(SELECT CODE + ',' FROM #) SET @i =(SELECT ID FROM #) WHILE Charindex(',', @sql) > 0 BEGIN -- INSERT INTO #t4 SELECT @i, LEFT(@sql, Charindex(',', @sql) - 1) SET @sql= RIGHT(@sql, Len(@sql) - Charindex(',', @sql)) END ;WITH cet AS ( SELECT '00000002' AS CODE ,'AAA'AS NAME UNION ALL SELECT '00000003' AS CODE ,'BBB'AS NAME UNION ALL SELECT '00000004' AS CODE ,'CCC'AS NAME ),cet2 AS ( SELECT t.ID, c1.CODE, c1.NAME FROM cet c1 LEFT JOIN #t4 t ON c1.CODE=t.CODE ) SELECT ID,(STUFF((SELECT ','+NAME FROM cet2 c2 WHERE c2.ID=c.ID FOR XML PATH('') ),1,1,''))AS NAME, (STUFF((SELECT ','+CODe FROM cet2 c2 WHERE c2.ID=c.ID FOR XML PATH('') ),1,1,''))AS Code FROM cet2 c GROUP BY ID
xxfvba 2015-07-30
  • 打赏
  • 举报
回复
select A.*,B.[Name] from A, (select distinct stuff((select ','+code from B for xml path('')),1,1,'') as Code,stuff((select ','+name from B for xml path('')),1,1,'') as [Name] from B) B where A.Code=B.Code
xxfvba 2015-07-30
  • 打赏
  • 举报
回复
select A.*,stuff((select ','+Name from B where charindex(','+b.Code+',',','+a.code+',')>0 for xml path('')),1,1,'') as [Name] from A
xxfvba 2015-07-30
  • 打赏
  • 举报
回复
select A.*,stuff((select ','+Name from B where charindex(b.Code,a.code)>0 for xml path('')),1,1,'') as [Name] from A

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧