有这样两个表 a表和b表,两个表根据id列可以匹配。a表的ID是主键,一个a表id可以匹配b表多条记录。现在想把b表里面的bak1更新到a表的bak4,当id一对多的情况,怎么把b表的值更新到a表,中间用逗号隔开。
求教各位大神
b表先根据a表的主键进行列转行,然后那这列转行的数据根据关联Id进行update的更新就可以了
谢谢 可以了
b表先进行分组,然后将分组后的结果跟a表关联
sql2017以上可以使用string_agg函数
update a set a.bak4=t.bak
from a
join
(
select b.id,string_agg(b.bak1, ', ') as bak
from a join b on a.id=b.id
group by b.id
) t
on a.id=t.id
https://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server
服务器是2008的,不过还是感谢你!