找出同SID下的最大Series No或最大Version的那一行

半截烟头 2012-06-18 02:49:45
我是要找出同SID下的:(1)如果相同series no,就取最大Version那一行
(2)在最大series no的行中取version最大的记录
有这样一个表:

SID FY Type Series No Version
15476 2012 A 1 1
15476 2012 A 2 1
15476 2012 A 2 2
15476 2012 A 3 1
15800 2012 A 1 1
15800 2012 A 2 1
15800 2012 A 2 2
15800 2012 A 3 1

用一条SQL 语句,按SID,FY,Type查找出Series No和Version最大的那些记录。

也就是说,要找出下面这样的结果记录:
15476 2012 A 3 1
15800 2012 A 3 1

不能找出 象15476,2012,A,3,2这样的结果出来。

怎么写SQL语句????

SQL SERVER 里的
[/code]
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
筱筱澄 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

问题解决了

SELECT *
FROM (SELECT *,row_number()over(partition by [SID],[FY],[Type]
order by SeriesNo desc, Version desc) as num
……
[/Quote]
恭喜,姐蹭点分
半截烟头 2012-06-28
  • 打赏
  • 举报
回复
问题解决了

SELECT *
FROM (SELECT *,row_number()over(partition by [SID],[FY],[Type]
order by SeriesNo desc, Version desc) as num
FROM table)a WHERE num=1
tim_spac_126 2012-06-18
  • 打赏
  • 举报
回复

select *
from [table] a
where exists (
select 1 from (
select sid, max([Series No]) as maxSNo
from [table]
group by sid
) as b
where b.sid = a.sid and a.[Series No] = maxSNo
)
and not exists (
select 1 from [table] b
where b.sid = a.sid
and b.[Series No] = a.[Series No]
and b.Version > a.Version
)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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