我有一张临时表,其中约有2000份合约代码。每个合同每月有1个分期付款,但上个月生成了两次分期付款的记录。 我需要为每个合同选择最后两个记录,这些记录在一个月内分两次生成。 例如:
Select * from TABLE_XY
where code = '112233' and rownum <= 2
order by creation_date desc;
此选项显示我需要的内容,但只显示一个代码。
我有临时表(名称为temporary_table),我存储了所有合同。 我不确定我是否解释得很好:)如果你需要更多ino请告诉我 感谢
答案 0 :(得分:0)
我不知道我是否明白你想做什么。如果需要提取与合同相关的代码,则存储在临时表中可以进行JOIN或在代码的IN中放入一个选择
Select * from TABLE_XY where code in
(select code from temporary_table where id_contract = ?¿) and rownum <= 2 order by creation_date desc;
答案 1 :(得分:0)
这应该有帮助
select * from (
select
t.*,
count(code) over (partition by code, to_char(creation_date, 'YYYY-MM')) as cnt,
to_char(creation_date, 'YYYY-MM') as creation_month,
row_number() over (partition by code, to_char(creation_date, 'YYYY-MM') order by creation_date desc) as rnum
from table_xy t
)
where cnt > 1 and rnum < 3
答案 2 :(得分:0)
您可以尝试为上个月重复的代码提供行号,并附上该日期的订单。
select * from
(Select a.*,row_number() over(partition by code order by creation_date desc) rn from TABLE_XY a)
where rn <= 2;