【问题标题】:Find earliest and latest dates of specified records from a table using SQL使用 SQL 从表中查找指定记录的最早和最晚日期
【发布时间】:2010-03-25 09:10:33
【问题描述】:

我有一个包含日期选择的表(在 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' 的所有记录。但返回类似 (earliest) StartDate = 01/03/2010(来自记录 ID 1)和(最新)EndDate = 08/03/2010(来自记录 ID 3)。

提前致谢

【问题讨论】:

  • 您可能需要检查您的开始日期不能晚于结束日期。 (第 3 行)
  • 别担心,这是一个拼写错误,并且在数据输入时完成了验证。谢谢。

标签: sql sql-server sql-server-2005


【解决方案1】:

您需要 minmax 聚合函数,例如一个很简单的案例:

select min(StartDate), max(EndDate)
from data
where Person = 'Paul'

您拥有 SQL 的所有常用功能,因此可以从子查询中进行选择。

【讨论】:

  • 谢谢理查德,现在很明显!
【解决方案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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2016-06-09
    • 2021-03-13
    • 2021-09-29
    • 2021-06-19
    • 2017-02-18
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多