我的问题是我有一些varchar2
值的表和插入日期。
我想要做的是获得这个varchar2值分组的最新两个这样的条目
是否可以在Oracle top(2)
中包含一些max
而不是group by
?
答案 0 :(得分:2)
编辑更新为不计算同一varchar2
的重复日期值。
将RANK()
替换为DENSE_RANK()
,以便分配连续的排名,然后使用distinct
来消除重复排名。
您可以使用DENSE_RANK()
SELECT DISTINCT TXT, ENTRY_DATE
FROM (SELECT txt,
entry_date,
DENSE_RANK () OVER (PARTITION BY txt ORDER BY entry_date DESC)
AS myRank
FROM tmp_txt) Q1
WHERE Q1.MYRANK < 3
ORDER BY txt, entry_date DESC
输入:
txt | entry_date xyz | 03/11/2014 xyz | 25/11/2014 abc | 19/11/2014 abc | 04/11/2014 xyz | 20/11/2014 abc | 02/11/2014 abc | 28/11/2014 xyz | 25/11/2014 abc | 28/11/2014
结果:
txt | entry_date abc | 28/11/2014 abc | 19/11/2014 xyz | 25/11/2014 xyz | 20/11/2014