请问
表1:结构如下
pkid skuid locid cntqty
1 123 c001 2
2 123 c001 3
3 234 c002 4
4 234 c002 4
5 123 c001 1现在需要保留重复数据(skuid+locid相等即为重复)中cntqty 值较大的一个,如何操作呢?谢谢
表1:结构如下
pkid skuid locid cntqty
1 123 c001 2
2 123 c001 3
3 234 c002 4
4 234 c002 4
5 123 c001 1现在需要保留重复数据(skuid+locid相等即为重复)中cntqty 值较大的一个,如何操作呢?谢谢
解决方案 »
- 没分了,只求好心人,问个基本简单的SQL语句。。。。。。。。。。。。。。
- 怎样一次重建数据库的所有索引(sqlserver)
- 求一SQL语句
- 如何判断SQL操作的哪个表?
- 指定字段显示指定内容求解
- 速战速决
- 一个没见过的错误:安装sql server 2000时报"您的机器缓冲区已满或列队,不能进行套接字操作"
- 在用SSIS是,在DataFlow里面转换一个表,在mapping column是提示错误:column "IP_No" can't convert between unicode and non_unicode s
- SQL Server出现异常,内存占用非常之高(300多M,平常是100多M),可能是什么原因?怎样分析?
- 在vb 如何实现网传输文件
- 如何在查询中把SUM()的结果加起来?
- 如何在程序中创建存储过程?
要完成你的要求需要先生成一个临时表,在临时表中需要包含‘skuid+locid’(用‘+’将两个字段连接起来就可以了)详细的代码为:
select pkid,skuid+locid ,cntqty in #<新表的名称>from 表一
select pkid ,skuid+locid ,cntqty from <新表的名称> where cntqty=
(select pkid,skuid+locid ,cntqty where cntqty=
select max(cntqty) from <新表的名称> group by skuid+locid)
delete a from ta a where cntqty not in (select max(cntqty) from ta where skuid=a.skuid and locid =a.locid )
insert @ta
select 1, 123, 'c001', 2
union all select 2, 123, 'c001', 3
union all select 3, 234, 'c002', 4
union all select 4, 234, 'c002', 4
union all select 5, 123, 'c001', 1delete a from @ta a where pkid not in
(select top 1 pkid from @ta where skuid=a.skuid and locid =a.locid order by cntqty desc )select *from @ta(所影响的行数为 5 行)
(所影响的行数为 3 行)pkid skuid locid cntqty
----------- ----------- ----- -----------
2 123 c001 3
4 234 c002 4(所影响的行数为 2 行)
if object_id('ta')>0 drop table tacreate table ta (pkid smallint identity(1,1),skuid varchar(12),locid varchar(20),cntqty smallint) insert into ta select '123','c001',2 union all select '123','c001',3 union all
select '234','c002',4 union all select '234','c002',4 union all select '123','c001',1--执行
select * from
(
select a.pkid,a.skuid,a.locid,a.cntqty from ta a inner join (select skuid,locid,max(cntqty) as cntqty from ta group by skuid,locid) b on
a.skuid=b.skuid and a.locid=b.locid and a.cntqty=b.cntqty
) t order by t.pkid/*结果
pkid skuid locid cntqty
------ ------------ -------------------- ------
2 123 c001 3
4 234 c002 4(2 行受影响)
*/