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行业数据SQLselect
--2000以上
select a.*,b.DutyName from
( select MAX(DutyDate) DutyDate,sign
from @DutyInfo
--where条件加这里
group by sign ) as a
join @DutyInfo as b on a.DutyDate=b.DutyDate and a.sign=b.sign
order by a.DutyDate--2005以上
select MaxDate Dutydate,DutyName,SIGN
from (select DutyDate, DutyName,sign,MAX(DutyDate) over (partition by sign) MaxDate
from @DutyInfo
--where条件加这里
) as a
where DutyDate=MaxDate
order by a.DutyDate
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