求一条SQL语句.求时间最大的那条记录.

路过路人乙 2016-05-02 09:31:20
有一个表是这样的..




日期 | 状态 | 标志 | 限令整改日期
2016-01-01 | Y | AX | 2016-01-05
2016-01-02 | Y | AX | 2016-01-05
2016-01-06 | Y | AX | 2016-01-05
2016-01-03 | N | AJ |
2016-01-07 | N | AJ |
2016-01-10 | Y | AJ | 2016-02-01
2016-01-01 | N | BC |
2016-01-05 | N | BC |
2016-01-06 | N | BC |


标志是具有唯一性的..同一标志的记录代表的是一样的东西,只是日期有变化,其他状态有变化..
另外,标志 + 日期是唯一索引.
状态为Y表示需要按照限令整改日期来整改的.
我需要找到最后状态为Y..并且根据当前时间,超出整改日期了的记录..(根据当前时间,不是根据表中日期来比较)

我其实也弄出结果了.只是我的方法比较笨..

我先用
select 标志,max(日期) from tab group by 标志..得到每个标志最大记录日期,,然后用left outer join的方式获取表中其他元素来进行判断...

这种方式感觉很累赘...所以来这里请教下有没有更简洁的方式?
...全文
515 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 版主 2016-05-02
  • 打赏
  • 举报
回复
-- 建议以后发贴,不要涉及到实际业务,1是为了保密,2是为了描述方便
-- 大概这个样子,没有测试;
with m as (
select row_number() over(partition by 标志 , 日期 order by 日期 desc) rn , *
from mytable
where 日期 < getdate() -- 小于当前日期 
)
select * from where rn = 1 
shoppo0505 2016-05-02
  • 打赏
  • 举报
回复
有其他方式,但是都差不多

34,594

社区成员

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

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