取另外一表的数据,将两列数据合成一列填入

llh6795 2015-12-28 09:49:39
OS(操作系统): [xp]
DB(数据库版本): [MSSQL2005企业版]

问题描述:

表信息:
tb 1 --表名
spbh bzxh --列名
1wp1103 --列值
5wpv9047
2w7011
.. ...
tb2 --表名
spbh ylsh ylbl --列名
1wp1103 w 51 --列值
1wp1103 p 49
5wpv9047 w 50
5wpv9047 p 40
5wpv9047 v 10
2w7011 w 100
.. ...
需求说明:
当tb2和 tb 1第一列spbh相同,将 tb2的ylsh,ylbl填入 tb 1中的bzxh

最终结果:
tb 1 --表名
spbh bzxh --列名
1wp1103 w51p49 --列值
5wpv9047 w50p40v10
2w7011 w100

请高手指教,谢谢,在线等
...全文
208 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
llh6795 2015-12-28
  • 打赏
  • 举报
回复
谢谢大家,正在调试中
Pact_Alice 2015-12-28
  • 打赏
  • 举报
回复
SELECT spbh,(STUFF((SELECT''+ylsh+cast(ylbl as VARCHAR(50)) FROM #Temp_1 c2 WHERE c2.spbh=c.spbh FOR XML PATH('') ),1,0,'')) AS A FROM #Temp_1 c GROUP BY spbh
中国风 2015-12-28
  • 打赏
  • 举报
回复
  
 UPDATE tb1
 SET bzxh=(SELECT ''+ylsh FROM tb2 WHERE spbh=tb1.spbh FOR XML PATH(''))
卖水果的net 2015-12-28
  • 打赏
  • 举报
回复

create table tb1(spbh varchar(10), bzxh varchar(30))
go
insert into tb1(spbh) values('1wp1103'),('5wpv9047'),('2w7011')
go
create table tb2(spbh varchar(10) ,ylsh varchar(1) , ylbl varchar(10))
go
insert into tb2 values
('1wp1103','w','51'),
('1wp1103','p','49'),    
('5wpv9047','w','50'),
('5wpv9047','p','40'),
('5wpv9047','v','10'),
('2w7011','w','100')
go
with m as (
select spbh , (select ylsh  + ylbl from tb2 where z.spbh = spbh for xml path('')) x 
  from tb2 z
 group by spbh
)
update tb1 
set tb1.bzxh = m.x
from tb1 , m  
where tb1.spbh = m.spbh
go
select * from tb1 
go
drop table tb1 , tb2
go


spbh       bzxh
---------- ------------------------------
1wp1103    w51p49
5wpv9047   w50p40v10
2w7011     w100

(3 行受影响)



Pact_Alice 2015-12-28
  • 打赏
  • 举报
回复
CREATE TABLE #Temp_1 ( spbh VARCHAR(100), ylsh VARCHAR(100) , ylbl int ) INSERT INTO #Temp_1 SELECT '1wp1103' , 'w' , 51 UNION all SELECT '1wp1103' , 'p', 49UNION all SELECT '5wpv9047' , 'w', 50 UNION all SELECT '5wpv9047', 'p' , 40 UNION all SELECT '5wpv9047' , 'v' , 10 UNION all SELECT '2w7011', 'w' , 100 CREATE TABLE #Temp_2 ( spbh VARCHAR(100), bzxh VARCHAR(100) ) INSERT INTO #Temp_2 SELECT spbh,(STUFF((SELECT ylsh+cast(ylbl as VARCHAR(50)) FROM #Temp_1 c2 WHERE c2.spbh=c.spbh FOR XML PATH('') ),1,1,'')) AS A FROM #Temp_1 c GROUP BY spbh

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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