2009-01-14 86 views
3

在SQL/Transact SQL中,我試圖更新臨時表以從3個不同日期列(在該臨時表中)獲取最新日期,並將該MAX日期放入「最新日期」列中。SQL/T-SQL - 如何從N列中的1列中獲取MAX值?

使用更新語句執行此操作的最佳方法是什麼?

+1

http://stackoverflow.com/questions/71022/sql-max-of-multiple-columns的可能的複製 – 2011-07-13 11:57:37

回答

4

我認爲你需要從

的recordId,列1,列2,欄3

規範化數據庫

的recordId,ColumnID的,價值

然後你就可以找到在三列中的最大值很容易...

0

您可以使用3'If'語句,從第一個日期開始。然後,在第三個'If'聲明之後,您將知道哪個是最高(最大)日期...

然後將其存儲在變量中並從那裏開始工作。

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 
0

甲骨文公司擁有最大的語句,可以排序與函數或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 

當然,這對同一行擊中表三次。熱膨脹係數可能會解決:

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 
2

也許工會:

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