一直补充不好意思
表内数据
品名 区分 数量
AA 0 100
AA 1 200
XY 0 100
XY 1 300
ZZ 1 400
AA 2 400
ZZ 3 500突然发现,根本没有 1 这个区分 现在想把区分为1的数据删掉的同时
把区分为1的数量 加到品名相同且区分为0的数量上
最终数据希望变成
品名 区分 数量
AA 0 300
XY 0 400
ZZ 0 400
AA 2 400
ZZ 3 500
表内数据
品名 区分 数量
AA 0 100
AA 1 200
XY 0 100
XY 1 300
ZZ 1 400
AA 2 400
ZZ 3 500突然发现,根本没有 1 这个区分 现在想把区分为1的数据删掉的同时
把区分为1的数量 加到品名相同且区分为0的数量上
最终数据希望变成
品名 区分 数量
AA 0 300
XY 0 400
ZZ 0 400
AA 2 400
ZZ 3 500
update TB set 数量=数量+b.数量
from TB as a inner join (select 品名,数量 from TB where 区分=1) as b on a.品名=b.品名
where 区分=0
delete from TB where 区分=1
品名 nvarchar(4),区分 int,数量 int);
DELETE FROM TB OUTPUT DELETED.* INTO @TB WHERE 区分 IN(1,0)
INSERT INTO TB(品名,区分,数量)
SELECT 品名,0,SUM(数量)
FROM @TB
GROUP BY 品名
SELECT * FROM dbo.TB/*
AA 0 300
XY 0 400
ZZ 0 400
AA 2 400
ZZ 3 500*/
select 品名,replace(区分 ,1,0)区分 ,sum(数量)数量 from 表
group by 品名,replace(区分 ,1,0)
这个只是查询,不行就往那表里插入,用这个显示?
select a.品名,0,0
from (select distinct 品名 from tb ) as a left join (select 品名 from tb where 区分=0) as b on a.品名=b.品名
where b.品名 is null
然后再执行update TB set 数量=数量+b.数量
from TB as a inner join (select 品名,数量 from TB where 区分=1) as b on a.品名=b.品名
where 区分=0
delete from TB where 区分=1