Как обновить таблицу с одним значением в строке вместо значений, разделенных запятыми
Привет. У меня есть 2 таблицы с некоторыми данными с одинаковым значением. Теперь я хочу обновить один столбец одной таблицы, используя соединение с другим. Но мне нужно, чтобы в каждой строке обновлялось одно значение, а не запятая.
Я привожу здесь пример с тем, что я пробовал.
Что я уже пробовал:
create table #tmp1(id int,pnum varchar(100),amount numeric(18,2),RecNo varchar(100)) create table #tmp2(id int,pnum varchar(100),amount numeric(18,2),RecNo varchar(100)) insert into #tmp1 values(1,'P1',100,'Rec1') insert into #tmp1 values(2,'P2',100,'Rec2') insert into #tmp1 values(3,'P1',100,'Rec3') insert into #tmp1 values(4,'P1',100,'Rec4') insert into #tmp1 values(5,'P3',100,'Rec5') insert into #tmp2(id,pnum,amount) values(1,'P1',100) insert into #tmp2(id,pnum,amount) values(2,'P1',100) insert into #tmp2(id,pnum,amount) values(3,'P1',100) insert into #tmp2(id,pnum,amount) values(4,'P3',100) UPDATE a SET a.RecNo = b.ReceiptList FROM #tmp2 a INNER JOIN ( SELECT pnum, STUFF((SELECT ',' + RecNo FROM #tmp1 WHERE pnum = a.pnum and amount=a.amount FOR XML PATH ('')), 1, 1, '') AS ReceiptList FROM #tmp2 AS a GROUP BY pnum,amount ) b ON a.pnum = b.pnum WHERE b.ReceiptList IS NOT NULL select * from #tmp2 drop table #tmp1 drop table #tmp2
Я получаю результат вот так:
id pnum amount RecNo 1 P1 100.00 Rec1,Rec3,Rec4 2 P1 100.00 Rec1,Rec3,Rec4 3 P1 100.00 Rec1,Rec3,Rec4 4 P3 100.00 Rec5
однако я хочу получить результат, как показано ниже:
id pnum amount RecNo 1 P1 100.00 Rec1 2 P1 100.00 Rec3 3 P1 100.00 Rec4 4 P3 100.00 Rec5