sqlserver 取行记录问题

Barnett_Hao 2010-10-21 11:54:50
表结构: 证件号码 逾期期数,逾期金额 等等
证件号码会重复
按要求抽取行记录 :
1.逾期期数最大的
2.如果逾期期数一样,取逾期金额最大的行记录 取一条
...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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.逾期金额)))

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧