sqlserver 取行记录问题

Barnett_Hao 2010-10-21 11:54:50
表结构: 证件号码 逾期期数,逾期金额 等等
证件号码会重复
按要求抽取行记录 :
1.逾期期数最大的
2.如果逾期期数一样,取逾期金额最大的行记录 取一条
...全文
45 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fpzgm 2010-10-21


--方法一
select * from [table] t
where not exists
(select 1 from [table] where 证件号码 = t.证件号码 and
(逾期期数>t.逾期期数 or (逾期期数 = t.逾期期数 and 逾期金额 > t.逾期金额)))

--方法二
with cte as
(select id=row_number()over(partition by 证件号码 order by 逾期期数 desc,逾期金额 desc),* from [table])
select 证件号码,逾期期数,逾期金额
from cte where id=1
  • 打赏
  • 举报
回复
abuying 2010-10-21
select t.* from tb t where not exists(select 1 from tb where 证件号码 = t.证件号码 and (逾期期数>t.逾期期数 
union all
select t.* from tb t where not exists(select 1 from tb where
逾期期数 = t.逾期期数 and 逾期金额 > t.逾期金额)
  • 打赏
  • 举报
回复
幸运的意外 2010-10-21
这个只能表自联了,效率不高,代码引用乌龟哥的

select t.*
from tb t
where not exists(select 1 from tb where 证件号码 = t.证件号码 and (逾期期数>t.逾期期数 or (逾期期数 = t.逾期期数 and 逾期金额 > t.逾期金额)))
  • 打赏
  • 举报
回复
fpzgm 2010-10-21

select * from [table] t
where not exists
(select 1 from tb where 证件号码 = t.证件号码 and
(逾期期数>t.逾期期数 or (逾期期数 = t.逾期期数 and 逾期金额 > t.逾期金额)))

  • 打赏
  • 举报
回复
claro 2010-10-21
貌似可以结贴了。
  • 打赏
  • 举报
回复
dawugui 2010-10-21
select t.* from tb t where not exists(select 1 from tb where 证件号码 = t.证件号码 and (逾期期数>t.逾期期数 or (逾期期数 = t.逾期期数 and 逾期金额 > t.逾期金额)))
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-21 11:54
社区公告
暂无公告