sql语句求大神指点~小菜鸟拜谢



如图,我要把 cpkc中的cpbh更新到kwjbxx表对应的kwbh这行的cpbhs中,但是cpbh这个字段是有重复的,必须以英文逗号分隔。请问大神要怎么处理这段?
举个例子
cpkc这个表中有数据
cpbh kwbh
010103 B06-3-1
010101 B06-5-2
01010442 B06-5-2
010106 B06-8-1
010107 B06-5-2

kwjbxx表中字段是这样的
kwbh cpbhs
B06-5-2 NULL
B06-8-1 NULL
B06-3-1 NULL
B06-5-2 NULL

需要得到的值是 kwjbxx表
kwbh cpbhs
B06-5-2 01010442,010101,010107
B06-8-1 010106
B06-3-1 010103
...全文
526 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwfxgm 2017-10-29
  • 打赏
  • 举报
回复
每天学一点。争取早日成神。
二月十六 版主 2017-10-26
  • 打赏
  • 举报
回复
引用 7 楼 weixin_38554135 的回复:
静下心来看明白了。谢谢大神
如果问题解决了,记得结贴哦
  • 打赏
  • 举报
回复
静下心来看明白了。谢谢大神
二月十六 版主 2017-10-26
  • 打赏
  • 举报
回复
引用 5 楼 weixin_38554135 的回复:
[quote=引用 4 楼 sinat_28984567 的回复:] [quote=引用 3 楼 z10843087 的回复:] [quote=引用 2 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#cpkc') is null
	drop table #cpkc
Go
Create table #cpkc([cpbh] nvarchar(28),[kwbh] nvarchar(27))
Insert #cpkc
select N'010103',N'B06-3-1' union all
select N'010101',N'B06-5-2' union all
select N'01010442',N'B06-5-2' union all
select N'010106',N'B06-8-1' union all
select N'010107',N'B06-5-2'
GO
if not object_id(N'Tempdb..#kwjbxx') is null
	drop table #kwjbxx
Go
Create table #kwjbxx([kwbh] nvarchar(27),[cbbhs] NVARCHAR(100))
Insert #kwjbxx
select N'B06-5-2',null union all
select N'B06-8-1',null union all
select N'B06-3-1',null union all
select N'B06-5-2',null
Go
--测试数据结束
SELECT DISTINCT
        kwbh ,
        STUFF(( SELECT  ',' + cpbh
                FROM    #cpkc
                WHERE   kwbh = #kwjbxx.kwbh
              FOR
                XML PATH('')
              ), 1, 1, '') AS cpbhs
FROM    #kwjbxx  
大神,我这个还是不太懂,如果说我直接使用的话需要改些什么呢。
把这句改成自己的表名和字段名 SELECT DISTINCT kwbh , STUFF(( SELECT ',' + cpbh FROM #cpkc WHERE kwbh = #kwjbxx.kwbh FOR XML PATH('') ), 1, 1, '') AS cpbhs FROM #kwjbxx
  • 打赏
  • 举报
回复
[quote=引用 4 楼 sinat_28984567 的回复:] [quote=引用 3 楼 z10843087 的回复:] [quote=引用 2 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#cpkc') is null
	drop table #cpkc
Go
Create table #cpkc([cpbh] nvarchar(28),[kwbh] nvarchar(27))
Insert #cpkc
select N'010103',N'B06-3-1' union all
select N'010101',N'B06-5-2' union all
select N'01010442',N'B06-5-2' union all
select N'010106',N'B06-8-1' union all
select N'010107',N'B06-5-2'
GO
if not object_id(N'Tempdb..#kwjbxx') is null
	drop table #kwjbxx
Go
Create table #kwjbxx([kwbh] nvarchar(27),[cbbhs] NVARCHAR(100))
Insert #kwjbxx
select N'B06-5-2',null union all
select N'B06-8-1',null union all
select N'B06-3-1',null union all
select N'B06-5-2',null
Go
--测试数据结束
SELECT DISTINCT
        kwbh ,
        STUFF(( SELECT  ',' + cpbh
                FROM    #cpkc
                WHERE   kwbh = #kwjbxx.kwbh
              FOR
                XML PATH('')
              ), 1, 1, '') AS cpbhs
FROM    #kwjbxx  
大神,我这个还是不太懂,如果说我直接使用的话需要改些什么呢。
二月十六 版主 2017-10-26
  • 打赏
  • 举报
回复
引用 3 楼 z10843087 的回复:
[quote=引用 2 楼 sinat_28984567 的回复:]
--测试数据
if not object_id(N'Tempdb..#cpkc') is null
	drop table #cpkc
Go
Create table #cpkc([cpbh] nvarchar(28),[kwbh] nvarchar(27))
Insert #cpkc
select N'010103',N'B06-3-1' union all
select N'010101',N'B06-5-2' union all
select N'01010442',N'B06-5-2' union all
select N'010106',N'B06-8-1' union all
select N'010107',N'B06-5-2'
GO
if not object_id(N'Tempdb..#kwjbxx') is null
	drop table #kwjbxx
Go
Create table #kwjbxx([kwbh] nvarchar(27),[cbbhs] NVARCHAR(100))
Insert #kwjbxx
select N'B06-5-2',null union all
select N'B06-8-1',null union all
select N'B06-3-1',null union all
select N'B06-5-2',null
Go
--测试数据结束
SELECT DISTINCT
        kwbh ,
        STUFF(( SELECT  ',' + cpbh
                FROM    #cpkc
                WHERE   kwbh = #kwjbxx.kwbh
              FOR
                XML PATH('')
              ), 1, 1, '') AS cpbhs
FROM    #kwjbxx  
你用手机能打出这么多代码,,牛逼[/quote] 不是啊……是早上刷帖子,然后手机上能看到,电脑上看不到(估计是没人工审核通过呢),所以只能从手机上回帖,但是代码是电脑上写的……
OwenZeng_DBA 2017-10-26
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#cpkc') is null
	drop table #cpkc
Go
Create table #cpkc([cpbh] nvarchar(28),[kwbh] nvarchar(27))
Insert #cpkc
select N'010103',N'B06-3-1' union all
select N'010101',N'B06-5-2' union all
select N'01010442',N'B06-5-2' union all
select N'010106',N'B06-8-1' union all
select N'010107',N'B06-5-2'
GO
if not object_id(N'Tempdb..#kwjbxx') is null
	drop table #kwjbxx
Go
Create table #kwjbxx([kwbh] nvarchar(27),[cbbhs] NVARCHAR(100))
Insert #kwjbxx
select N'B06-5-2',null union all
select N'B06-8-1',null union all
select N'B06-3-1',null union all
select N'B06-5-2',null
Go
--测试数据结束
SELECT DISTINCT
        kwbh ,
        STUFF(( SELECT  ',' + cpbh
                FROM    #cpkc
                WHERE   kwbh = #kwjbxx.kwbh
              FOR
                XML PATH('')
              ), 1, 1, '') AS cpbhs
FROM    #kwjbxx  
你用手机能打出这么多代码,,牛逼
二月十六 版主 2017-10-26
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#cpkc') is null
drop table #cpkc
Go
Create table #cpkc([cpbh] nvarchar(28),[kwbh] nvarchar(27))
Insert #cpkc
select N'010103',N'B06-3-1' union all
select N'010101',N'B06-5-2' union all
select N'01010442',N'B06-5-2' union all
select N'010106',N'B06-8-1' union all
select N'010107',N'B06-5-2'
GO
if not object_id(N'Tempdb..#kwjbxx') is null
drop table #kwjbxx
Go
Create table #kwjbxx([kwbh] nvarchar(27),[cbbhs] NVARCHAR(100))
Insert #kwjbxx
select N'B06-5-2',null union all
select N'B06-8-1',null union all
select N'B06-3-1',null union all
select N'B06-5-2',null
Go
--测试数据结束
SELECT DISTINCT
kwbh ,
STUFF(( SELECT ',' + cpbh
FROM #cpkc
WHERE kwbh = #kwjbxx.kwbh
FOR
XML PATH('')
), 1, 1, '') AS cpbhs
FROM #kwjbxx


听雨停了 2017-10-26
  • 打赏
  • 举报
回复
用for xml path,自己百度下

34,594

社区成员

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

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