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

更新临时表多字段重复的记录
假设联合多表查询得到如下临时表。
fbillno fstatus number Sqty snumber qty

work001 1 SCN01 100 00A 10
work001 1 SCN01 100 00B 20
work001 1 SCN01 100 00C 30
work001 1 SCN01 100 00D 40
work001 1 SCN01 100 00E 50
work001 1 SCN01 100 00F 60
work001 1 SCN01 100 00G 70
work002 1 SCN02 200 10A 10
work002 1 SCN02 200 10B 20
work002 1 SCN02 200 10C 30
work002 1 SCN02 200 10D 40
work002 1 SCN02 200 10E 50
work002 1 SCN02 200 10F 60
work002 1 SCN02 200 10G 70

想更新之后到如下格式的表(把fbillno,fstatus,number,sqty重复的字段只保留第一条记录,但snumber,qty保留全部。

如下格式:

fbillno fstatus number Sqty snumber qty

work001 1 SCN01 100 00A 10
null null null null 00B 20
null null null null 00C 30
null null null null 00D 40
null null null null 00E 50
null null null null 00F 60
null null null null 00G 70
work002 1 SCN02 200 10A 10
null null null null 10B 20
null null null null 10C 30
null null null null 10D 40
null null null null 10E 50
null null null null 10F 60
null null null null 10G 70

分数不多,请教各位,谢谢先!


------解决方案--------------------
你套用一下这个
SQL code
DECLARE @TAB TABLE ([col1] varchar(1),[col2] int,[col3] int)
insert @TAB
select 'a',1,2 union all
select 'a',2,3 union all
select 'a',3,4 union all
select 'b',4,5 union all
select 'b',5,6 union all
select 'b',6,7
--------------开始查询--------------------------
select
   case px when 1 then col1 else '' end as col1,
   col2,col3
from
   (select px=row_number()over(partition by col1 order by getdate()),* from @TAB)t

------解决方案--------------------
最好表有一个自增的ID,
Update TableName set fbillno=null,fstatus=null,number=null,sqty=null
where ID not in (select min(ID) from TableName group by fbillno,fstatus,number,sqty)