【问题标题】:Max date in columns列中的最大日期
【发布时间】:2018-05-30 14:13:16
【问题描述】:

如何最好地在 where 语句中捕获最新的开始和结束日期(第 2 行)?

 START_DATE    END_DATE
1 - 1/1/2017    9/30/2017
2- 10/1/2017    12/31/2017


Where start_date <= '2017-12-31' and end_date >= '2017-01-01' 

【问题讨论】:

  • 使用ORDER BY START_DATE DESC
  • 其中 END_DATE = MAX(END_DATE)
  • 您可以按开始日期或结束日期排序,但不能让第一行有最长开始日期,第二行有最长结束日期。如果您的意思是列而不是行,您可以使用MAX(start_date)MAX(end_date)
  • 不清楚,如果最晚开始日期与最晚结束日期在不同的行怎么办?
  • 感谢您的回复。我正在加入合同开始和结束日期所在的这张表。我目前希望加入那些仅在 2017 年的人。然而,有一些在同一年有多行,所以当我加入时,我正在复制值。我们可以只对 2017 日历年使用 max(start_date) 和 max(end_date) 吗?在上面的示例中,我只想加入第 2 行。

标签: sql-server date max where-clause


【解决方案1】:

你想要order by 子句而不是where 子句:

select top 1 . . .
from . . 
order by start_date desc;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2015-02-22
    相关资源
    最近更新 更多