在SQL/Transact SQL中,我試圖更新臨時表以從3個不同日期列(在該臨時表中)獲取最新日期,並將該MAX日期放入「最新日期」列中。SQL/T-SQL - 如何從N列中的1列中獲取MAX值?
使用更新語句執行此操作的最佳方法是什麼?
在SQL/Transact SQL中,我試圖更新臨時表以從3個不同日期列(在該臨時表中)獲取最新日期,並將該MAX日期放入「最新日期」列中。SQL/T-SQL - 如何從N列中的1列中獲取MAX值?
使用更新語句執行此操作的最佳方法是什麼?
只有三個它不那麼難...這絕對不能擴展到任意數量的日期時間列!
Is there a Max function in SQL Server that takes two values like Math.Max in .NET?
它不與空值很好地工作,所以小心這裏。 .. – mishkin 2012-09-17 14:34:33
我認爲你需要從
的recordId,列1,列2,欄3
規範化數據庫到
的recordId,ColumnID的,價值
然後你就可以找到在三列中的最大值很容易...
您可以使用3'If'語句,從第一個日期開始。然後,在第三個'If'聲明之後,您將知道哪個是最高(最大)日期...
然後將其存儲在變量中並從那裏開始工作。
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
甲骨文公司擁有最大的語句,可以排序與函數或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
也許工會:
Select Case When DT1 > DT2 And DT1 > DT3 Then DT1
When DT2 > Dt3 Then Dt2 Else DT3 End
From TableName
http://stackoverflow.com/questions/71022/sql-max-of-multiple-columns的可能的複製 – 2011-07-13 11:57:37