日期:2014-05-17  浏览次数:20493 次

求一个SQL server 05的语句

select b.* from DutyInfo b
,
(select  MAX(a.DutyDate) DutyDate,sign as sign 
from DutyInfo a group by a.sign) a 
where b.DutyDate=a.DutyDate 
order by b.DutyDate

现在这个不能添加查询条件  我的需求是比如有一下数据
表 DutyInfo
DutyDate   DutyName  sign
20130515     A         1
20130516     B         1
20130517     C         2
20130518     A         1
20130519     B         2
20130520     C         2
20130521     A         1
我要找出sign分别为1和2且DutyDate最大的一组数据   要能添加DutyDate条件比如DutyDate小于 大于 或者在两个数之间   我上面那个就是不能添加条件 一添加条件就不显示数据了。(因为上面的语句默认是在已有数据中找出最大的1和2,所以一添加条件就屏蔽了最大两个Dutydate,才不显示数据了)
谢谢各位大侠了!!!!!
SQL?Server 行业数据 SQL select

------解决方案--------------------

select MaxDate Dutydate,DutyName,sign
from (select DutyDate, DutyName,sign,MAX(DutyDate) over (partition by sign) MaxDate
from @DutyInfo 
(条件)
) as a
where DutyDate=MaxDate
order by a.DutyDate