2017-05-31 1 views
-1

Ich habe eine temporäre Tabelle, wo rund 2000 Vertragscodes sind. Jeder Vertrag hat 1 Rate pro Monat, aber im letzten Monat wurden doppelte Rate Raten generiert. Ich muss nur die letzten zwei Datensätze für jeden Vertrag auswählen, die 2 Raten in einem Monat generiert haben. Zum Beispiel:Wählen Sie, welches nur 2 zuletzt erstellte Datensätze für jeden Vertrag zeigt

Select * from TABLE_XY 
where code = '112233' and rownum <= 2 
order by creation_date desc; 

Diese Auswahl zeigt, was ich brauche, aber nur für einen Code.

Ich habe temporäre Tabelle (nennen Sie es temporary_table), wo ich alle Verträge gespeichert habe. Ich bin nicht sicher, ob ich es gut erklärt :) Wenn Sie mehr ino benötigen pls mich Dank

Antwort

0

Ich weiß nicht wissen lassen, wenn ich verstehe, was Sie tun möchten. Wenn Sie die Codes auf einen Vertrag mit Bezug extrahieren müssen, in der temporären Tabelle gespeichert könnte ein oder wählen Sie in der IN der

Select * from TABLE_XY where code in 
(select code from temporary_table where id_contract = ?¿) and rownum <= 2 order by creation_date desc; 
0

Code setzen machen JOIN sollten diese

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 
0

kann Ihnen helfen, Versuchen Sie, die Zeilennummer dem Code zu geben, der für den letzten Monat mit der Bestellung für dieses Datum wiederholt wurde.

select * from 
(Select a.*,row_number() over(partition by code order by creation_date desc) rn from TABLE_XY a) 
where rn <= 2; 
Verwandte Themen