日期:2014-05-17  浏览次数:20474 次

求助,表内数据加与删
例如 
表内数据
品名   区分  数量
AA      0     100
AA      1     200
XY      0     100
XY      1     300

突然发现,根本没有 1 这个区分  现在想把区分为1的数据删掉的同时 
把区分为1的数量 加到品名相同且区分为0的数量上
最终数据希望变成
品名   区分  数量
AA      0     300
XY      0     400

在先等,
谢谢。

------解决方案--------------------
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
------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (品名 nvarchar(4),区分 int,数量 int)
insert into [TB]
select 'AA',0,100 union all
select 'AA',1,200 union all
select 'XY',0,100 union all
select 'XY',1,300

select * from [TB]

BEGIN TRAN D1

UPDATE dbo.TB
SET TB.数量 = TB.数量 + B.数量
FROM (SELECT 品名,SUM(数量) AS 数量 FROM TB WHERE 区分 = 1 GROUP BY 品名 )B
WHERE B.品名 = TB.品名
and TB.区分 = 0

DELETE FROM TB WHERE 区分 = 1

SELECT * FROM dbo.TB

COMMIT TRAN D1

/*
AA 0 300
XY 0 400*/