SQL/T-SQL-如何从N列中的1列中获取最大值?

SQL/T-SQL-如何从N列中的1列中获取最大值?,sql,tsql,Sql,Tsql,在SQL/Transact-SQL中,我试图更新一个临时表,从3个不同的日期列(在该临时表中)获取最新日期,并将该最大日期放入“最新日期”列 使用update语句执行此操作的最佳方法是什么?我认为您需要从 记录ID,第1列,第2列,第3列 到 记录ID、列ID、值 然后,您可以轻松地在三列中找到最大值…您可以使用3个“如果”语句,从第一个日期开始。然后在第三个“如果”语句之后,您将知道哪一个是最高(最大)日期 然后将其存储在一个变量中并从那里开始工作。只有三个变量就不难了。。。这绝对不能扩展到任

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


使用update语句执行此操作的最佳方法是什么?

我认为您需要从

记录ID,第1列,第2列,第3列

记录ID、列ID、值


然后,您可以轻松地在三列中找到最大值…

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


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

只有三个变量就不难了。。。这绝对不能扩展到任意数量的datetime列

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

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

见这个问题:

也许是工会

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
当然,对于同一行,这会在表中出现三次。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
可能重复的
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