我有此表操作-
AMOUNT CLAIM_TYPE INSERTED_DATE
100 SETT 09-SEP-18 10.37.50
1006 ATTAA 09-SEP-18 10.37.54
102320 FIXX 09-SEP-18 10.37.55
10077 SETT 09-SEP-18 10.37.56
10034 FIXX 09-SEP-18 10.37.57
900 ATTAA 09-SEP-18 10.37.58
我要基于CLAIM_TYPE列值过滤出记录,以使 CLAIM_TYPE值仅出现一次,并且该记录必须是最新记录(插入日期)。
SELECT TOTAL_RECEIVED_AMOUNT, CLAIM_TYPE, INSERTED_DATE
FROM OPERATION
WHERE CLAIM_TYPE IN
('FIXX', 'SETT', 'ATTAA', 'PLACC', 'THREE', 'SIXX','TWELL') ORDER BY INSERTED_DATE DESC ;
AMOUNT CLAIM_TYPE INSERTED_DATE
900 ATTAA 09-SEP-18 10.37.58
10034 FIXX 09-SEP-18 10.37.57
10077 SETT 09-SEP-18 10.37.56
102320 FIXX 09-SEP-18 10.37.55
1006 ATTAA 09-SEP-18 10.37.54
100 SETT 09-SEP-18 10.37.50
预期结果是-
AMOUNT CLAIM_TYPE INSERTED_DATE
900 ATTAA 09-SEP-18 10.37.58
10034 FIXX 09-SEP-18 10.37.57
10077 SETT 09-SEP-18 10.37.56
在尝试计数,具有和分组依据子句时,我很难获得相同的结果。请提出建议。
答案 0 :(得分:1)
您可以使用ROW_NUMBER()
:
SELECT op.*
FROM (SELECT TOTAL_RECEIVED_AMOUNT, CLAIM_TYPE, INSERTED_DATE,
ROW_NUMBER() OVER (PARTITION BY CLAIM_TYPE ORDER BY INSERTED_DATE DESC) AS seq
FROM OPERATION op
WHERE CLAIM_TYPE IN ('FIXX', 'SETT', 'ATTAA', 'PLACC', 'THREE', 'SIXX','TWELL')
) op
WHERE seq = 1;
答案 1 :(得分:1)
使用相关子查询
BaseName