如何显示表数据|Oracle|的前两次出现



我有一个场景,其中我的表包含伪数据

特定数据重复多次,只需要提取前两次出现的

表中的数据采用以下格式

TAB_A | TAB_B
AB    | 12
AB    | 12
AB    | 2131
CF    | 12313
CF    | 13
CF    | 45
MG    | 424
MG    | 242
MG    | 546
VR    | 868
VR    | 312
VR    | 35
VR    | 68

我只需要以下格式的输出TAB_A列的前两次出现

TAB_A |TAB_B
AB    |12
AB    |12
CF    |12313
CF    |13
MG    |424
MG    |242
VR    |868
VR    |312

我尝试了无法实现逻辑的分区方法,甚至尝试了的rownum顺序

您可以使用ROW_NUMBER((,如下所示:

SELECT tab_a, tab_b 
FROM (
SELECT t.*, ROW_NUMBER() OVER(PARTITION BY tab_a ORDER BY tab_b) AS row_number 
FROM test t) T
WHERE row_number <= 2

在此处查找演示

这应该有效:

select *
from (select TAB_A,TAB_B,
rank() over (partition by TAB_A order by TAB_B) rank
from test)
test
where rank <= 2

请在此处查看小提琴:http://sqlfiddle.com/#!18/eeaee/19

最新更新