【问题标题】:SQL Server select min date from 3 columns [duplicate]SQL Server从3列中选择最小日期[重复]
【发布时间】:2019-06-28 15:20:01
【问题描述】:

我有一个包含多个日期字段的表格。我需要得到一个派生字段,它是 3 个特定字段中最早的日期。我必须为 4 个不同的日期集执行此操作。

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    一种简单的方法是使用case 表达式:

    select case when Date1 > Date2 and Date1 > Date3 then
               Date1 
           when Date2 > Date3 and Date2 > Date1 then
               Date2
           else
               Date3
           end As TheDate
    from tableName
    

    虽然这很简单,但如果您有更多列,它往往会很快变得非常麻烦。另一种选择是使用values 子句,如下所示:

    select (
        select max(date)
        from (values (date1), (date2), (date3))v(date)
    ) 
    from tableName
    

    这也使您能够轻松获得最小值。

    【讨论】:

    • 你必须在 ELSE 上为 Date 2 vs Date 3 添加一些东西
    • @JuanCarlosOropeza 已更正。
    • 那你换了,你发现之前的有问题吗?
    • 我在语法 btu 上遇到了一些问题,让它从另一个标记为 dup 的线程中的示例中工作。 SELECT [Other Fields], (SELECT Max(v) FROM (VALUES (date1), (date2), (date3),...) AS value(v)) as [MaxDate] FROM [YourTableName]
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 2015-03-09
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多