SQL:只显示表中重复数据的头2笔数据,请看举例数据.用一条SQL可以实现吗? (100分)

  • 主题发起人 主题发起人 gondsoft
  • 开始时间 开始时间
G

gondsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
ID SN
43634 K708-KH-7080404-711
17193 K350-JS-35024150001
17194 K350-JS-35024150001
17195 K350-JS-35024150001
17388 K345-JH-3450808-H29
17389 K345-JH-3450808-H29
17390 K345-JH-3450808-H29
17391 K345-JH-3450808-H29
我要的条件是,SN字段要求只显示2条以内的记录。
用SQL语句执行后要得到如下结果:
ID SN
43634 K708-KH-7080404-711
17194 K350-JS-35024150001
17195 K350-JS-35024150001
17390 K345-JH-3450808-H29
17391 K345-JH-3450808-H29
对ID没有条件要求
 
一条语句实现不了的,
需要用临时表,游标的。
代码,虽然能麻烦点,但效率还是很高的。
这类问题我做过。
 
select * from tablename where sn in
(select sn group by sn having count(*)<3 )
union
select top 2 * from
(select * from tablename where sn in
(select sn group by sn having count(*)>2 ) ) a
group by sn
 
后退
顶部