【问题标题】:SQL/T-SQL - how to get the MAX value from 1 of N columns?SQL/T-SQL - 如何从 N 列中的 1 列中获取 MAX 值?
【发布时间】:2010-10-01 11:49:45
【问题描述】:

在 SQL/Transact SQL 中,我正在尝试更新一个临时表以从 3 个不同的日期列(在该临时表中)获取最新日期,并将该 MAX 日期放入“最新日期”列。

使用更新语句的最佳方法是什么?

【问题讨论】:

标签: sql tsql


【解决方案1】:
SELECT 
(CASE WHEN field_1 > field_2 THEN 
    CASE WHEN field_1 > field_3 THEN field_1 ELSE field_3 END
ELSE
    CASE WHEN field_2 > field_3 THEN field_2 ELSE field_3 END
END) AS maximum_date
FROM table

【讨论】:

    【解决方案2】:

    也许是工会?

    select max(myDate)
    from (
        select field_1 myDate from myTable where ...
        union all
        select field_2 myDate from myTable where ...
        union all
        select field_3 myDate from myTable where ...
    ) d
    

    当然,对于同一行,这会在表中命中 3 次。 CTE 可能会解决这个问题:

    with myRow as (
        select field_1, field_2, field_3 from myTable where ...
    )
    select max(myDate)
    from (
        select field_1 myDate from myRow
        union all
        select field_2 myDate from myRow
        union all
        select field_3 myDate from myRow
    ) d
    

    【讨论】:

      【解决方案3】:

      Oracle 有 GREATEST 语句,你可以用函数或 case 语句来模拟它

      看到这个问题:

      Is there a Max function in SQL Server that takes two values like Math.Max in .NET?

      【讨论】:

        【解决方案4】:

        只有三个并不难...这绝对不能扩展到任意数量的日期时间列!

         Select Case When DT1 > DT2 And DT1 > DT3 Then DT1
                     When DT2 > Dt3 Then Dt2 Else DT3 End
         From TableName
        

        【讨论】:

          【解决方案5】:

          您可以使用 3 个“如果”语句,从第一个日期开始。然后在第三个“If”语句之后,您将知道哪个是最高(最大)日期...

          然后将其存储在一个变量中并从那里开始工作。

          【讨论】:

            【解决方案6】:

            我认为您需要从

            规范化您的数据库

            记录 ID、列 1、列 2、列 3

            记录ID、列ID、值

            那么你就可以很容易地找到三列中的最大值了……

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-01-14
              • 2021-12-27
              • 2017-04-25
              • 2014-07-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-06-21
              相关资源
              最近更新 更多