SQL比较同一表中的两个最大日期
我不知道如何称呼这个话题,所以我想我会解释一下我需要什么。 我有下表:SQL比较同一表中的两个最大日期,sql,sql-server,max,Sql,Sql Server,Max,我不知道如何称呼这个话题,所以我想我会解释一下我需要什么。 我有下表: Id IdPerson date successfully 1 1 01.01.2012 FALSE 2 1 01.01.2014 TRUE 3 2 01.01.2014 FALSE 现在我想要所有最新条目为FALSE的人 这就是IdPerson 2,因为IdPerson 1在2014年是真的 我真的不知道该怎么做 有人能帮我吗 问候在分区
Id IdPerson date successfully
1 1 01.01.2012 FALSE
2 1 01.01.2014 TRUE
3 2 01.01.2014 FALSE
现在我想要所有最新条目为FALSE的人
这就是IdPerson 2,因为IdPerson 1在2014年是真的
我真的不知道该怎么做
有人能帮我吗
问候在分区上使用行数。。。在子查询中查找每个人的最新条目。然后,在外部查询中,仅选择那些已成功设置为“FALSE”的查询:
如果您使用的是SQL Server 2008 R2或更高版本,则可以使用Apply
select p.* from Person P
cross Apply
(
select MAX(date) [maxdate] from Person group by Id
)a
where P.Date = a.maxdate and p.Successfully = 0
有一种使用条件聚合的有趣方法:
select idperson
from table t
group by idperson
having max(date) = max(case when successfully = 'false' then date end);
注意:此解决方案和其他解决方案都假定日期以本机日期/时间格式存储。如果没有,您应该修复数据库,但此查询需要使用convert。我在mysql中尝试过:
从MyTable中选择Id、IdPerson、日期、状态
其中status='false'和date=ALL从MyTable中选择maxdate
按个人分组
select idperson
from table t
group by idperson
having max(date) = max(case when successfully = 'false' then date end);