【发布时间】:2016-09-29 01:00:15
【问题描述】:
我有一个tableA 的日期范围:
tranid item startdate enddate
---------------------------------------
1 A 1/1/2000 2/2/2005
2 A 5/1/2000 2/2/2005
3 B 7/8/2015 9/8/2015
4 C 4/10/2007 7/20/2008
5 C 4/10/2003 7/20/2005
如何编写 SQL 查询以仅选择最近的事务(例如最近的开始和结束日期)?
例如,对于 A,最近的日期范围是 5/1/2000 到 2/2/2005,对于 C,最近的日期范围是 C 4/10/2007 到 7/20/2008。
写这篇文章我完全不知所措,因为它看起来很容易,但实际上并非如此。
select item, max(enddate), max(startdate)
from tableA
where max(enddate)
group by item, enddate, startdate
SQL Server 在类似的情况下返回与“有”相关的错误 - 聚合问题。
感谢 :)
【问题讨论】:
-
如果一行有最大开始日期而另一行有最大结束日期怎么办?
标签: sql sql-server date aggregate