如何爲每個列獲取日期的最大值。如何爲每個列獲取日期的最大值
你好,對不起,我的英語我會做一個簡短的解決我的問題。
我使用postgresql,我有一個表的一些列,重要的是: A,B,C和D,我有另一個與日期(F)。
我想爲每個a,b和c(連接)得到D的值與日期(F)是a,b和c的最大值。
有什麼想法?
如何爲每個列獲取日期的最大值。如何爲每個列獲取日期的最大值
你好,對不起,我的英語我會做一個簡短的解決我的問題。
我使用postgresql,我有一個表的一些列,重要的是: A,B,C和D,我有另一個與日期(F)。
我想爲每個a,b和c(連接)得到D的值與日期(F)是a,b和c的最大值。
有什麼想法?
試試這個..
with cte as (
select 1 as A, 1 as B, 1 as C, 'Hello' as D, '12/1/2012'::date as F
union select 1,2,1,'Hello2','12/2/2012'
union select 1,1,1,'Hello3','12/5/2012'
)
select a.*
from cte a
join (
select A,B,C, MAX(F) F
from cte
group by A,B,C
) b
on a.A = b.A
and a.B = b.B
and a.C = b.C
and a.F = b.F
爲什麼你使用some_agggregate_function(D)? –
感謝您的回覆。代碼問題是當B或C具有其他值時,未顯示,例如: ABCDF 1 1 1您好12/01/2012 1 2 1 Hello2 12/02/2012 1 1 1 Hello3 12/05/2012 我想,我查詢的結果應該是: ABCDF 1 2 1 Hello2 2012年12月2日 111 Hello3 12/05/2012 的第一條記錄有相同的一,B和C比第三條記錄,但最大日期是Hello3。 –
嘗試:
SELECT GREATEST(A,B,C)
FROM table1
它會給你最大的A,B,C
。然後:
SELECT GREATEST(A,B,C), D
FROM table1
JOIN table2 ON GREATEST(A,B,C) = F
詳情:GREATEST
「另一位」 的意思是 「另一個表」 作爲伊戈爾·羅曼認爲,或 「另一列」? – bortzmeyer
發佈您的數據樣本肯定會有所幫助。我試圖從你的問題中提出一個,但我失敗了。 – bortzmeyer