2012-12-11 61 views
0

如何为每个列获取日期的最大值。如何为每个列获取日期的最大值

你好,对不起,我的英语我会做一个简短的解决我的问题。

我使用postgresql,我有一个表的一些列,重要的是: A,B,C和D,我有另一个与日期(F)。

我想为每个a,b和c(连接)得到D的值与日期(F)是a,b和c的最大值。

有什么想法?

+0

“另一位” 的意思是 “另一个表” 作为伊戈尔·罗曼认为,或 “另一列”? – bortzmeyer

+0

发布您的数据样本肯定会有所帮助。我试图从你的问题中提出一个,但我失败了。 – bortzmeyer

回答

0

试试这个..

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 
+0

为什么你使用some_agggregate_function(D)? –

+0

感谢您的回复。代码问题是当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。 –

1

尝试:

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