我有一个表(在MS SQL 2005中),其中包含一系列日期。我希望能够应用WHERE语句返回一组它们,然后返回哪一个日期是最早的一列,哪一个是另一列的最新日期。这是一个示例表:
ID StartDate EndDate Person
1 01/03/2010 03/03/2010 Paul
2 12/05/2010 22/05/2010 Steve
3 04/03/2101 08/03/2010 Paul
所以我想要返回Person ='Paul'的所有记录。但是返回类似(最早的)StartDate = 01/03/2010(来自记录ID 1)和(最新)EndDate = 08/03/2010(来自记录ID 3)。
提前致谢
答案 0 :(得分:9)
您需要min
和max
汇总功能,例如一个非常简单的案例:
select min(StartDate), max(EndDate)
from data
where Person = 'Paul'
您拥有SQL的所有常用功能,因此可以从子查询中进行选择。
答案 1 :(得分:2)
使用group by
也很简洁。所以如果你喜欢结果中的所有人,并且你忽略了where子句,那么你就不会得到错误的数据:
select person, min(StartDate), max(EndDate)
from data
group by person
或
select person, min(StartDate), max(EndDate)
from data
where person ='Paul'
group by person
或
select person, min(StartDate), max(EndDate)
from data
group by person
having person ='Paul'