SQL查询,根据特定列值以及插入日期的降序筛选记录
我有这张桌子-SQL查询,根据特定列值以及插入日期的降序筛选记录,sql,oracle,Sql,Oracle,我有这张桌子- 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-1
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值只出现一次,并且记录必须是最新记录(插入日期)
预期的结果是-
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
我在尝试计数、拥有和分组子句时很难获得相同的结果。请建议。您可以使用
行号()
:
您可以使用
行编号()
:
使用相关子查询
select * from OPERATION op
where op.INSERTED_DATE
in ( select max(INSERTED_DATE)
from
OPERATION op1
where op1.CLAIM_TYPE=op.CLAIM_TYPE
group by CLAIM_TYPE
)
and CLAIM_TYPE IN ('FIXX', 'SETT', 'ATTAA', 'PLACC', 'THREE', 'SIXX','TWELL')
使用相关子查询
select * from OPERATION op
where op.INSERTED_DATE
in ( select max(INSERTED_DATE)
from
OPERATION op1
where op1.CLAIM_TYPE=op.CLAIM_TYPE
group by CLAIM_TYPE
)
and CLAIM_TYPE IN ('FIXX', 'SETT', 'ATTAA', 'PLACC', 'THREE', 'SIXX','TWELL')
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;
select * from OPERATION op
where op.INSERTED_DATE
in ( select max(INSERTED_DATE)
from
OPERATION op1
where op1.CLAIM_TYPE=op.CLAIM_TYPE
group by CLAIM_TYPE
)
and CLAIM_TYPE IN ('FIXX', 'SETT', 'ATTAA', 'PLACC', 'THREE', 'SIXX','TWELL')