ste*_*bot 23 sql t-sql sql-server
我有一个非常简单的月度通讯数据集:
id | Name | PublishDate | IsActive
1 | Newsletter 1 | 10/15/2012 | 1
2 | Newsletter 2 | 11/06/2012 | 1
3 | Newsletter 3 | 12/15/2012 | 0
4 | Newsletter 4 | 1/19/2012 | 0
Run Code Online (Sandbox Code Playgroud)
等等.
PublishDate是独一无二的.
结果(基于以上):
id | Name | PublishDate | IsActive
2 | Newsletter 2 | 11/06/2012 | 1
Run Code Online (Sandbox Code Playgroud)
我想要的很简单.我只想要一份IsActive和PublishDate = MAX(PublishDate)的新闻通讯.
Ada*_*son 56
select top 1 * from newsletters where IsActive = 1 order by PublishDate desc
Run Code Online (Sandbox Code Playgroud)
Tar*_*ryn 15
你可以使用row_number():
select id, name, publishdate, isactive
from
(
select id, name, publishdate, isactive,
row_number() over(order by publishdate desc) rn
from table1
where isactive = 1
) src
where rn = 1
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用选择max()日期的子查询:
select t1.*
from table1 t1
inner join
(
select max(publishdate) pubdate
from table1
where isactive = 1
) t2
on t1.publishdate = t2.pubdate
Run Code Online (Sandbox Code Playgroud)