J'ai une liste de transactions de paiement dans une table. Cela inclut les inversions de paiement. Les inversions de paiement ne sont pas marquées, donc je dois déduire que si une déduction est égale à une transaction existante, il s'agit d'une annulationOracle Minus - À partir d'une liste de valeurs, comment compter uniquement les valeurs non inversées?
Je veux un décompte des transactions qui n'ont pas été annulées.
E.g D'après une liste de montants de transactions.
-5 (ceci est une inversion pour une 5 transaction, si une 5 transaction est toujours valide) -10 (Ceci est reprise pour une 10 transaction, donc pas de 10 transactions valides) -15 (C'est reprise pour une transaction 15, donc deux 15 opérations sont valides)Je veux une liste qui est
i.e J'ai eu quatre transactions qui n'ont pas été annulées.
Voici un code de test, ma tentative n'a pas fonctionné.
CREATE TABLE check_minus
(
name_id NUMBER(4),
trans NUMBER(4),
val NUMBER(2)
);
insert into check_minus values (1,1,5);
insert into check_minus values (1,2,5);
insert into check_minus values (1,3,-5);
insert into check_minus values (1,4,10);
insert into check_minus values (1,5,-10);
insert into check_minus values (1,6,15);
insert into check_minus values (1,7,15);
insert into check_minus values (1,8,15);
insert into check_minus values (1,9,-15);
insert into check_minus values (1,10,20);
commit;
-- using not in
select name_id, val from check_minus
where val > 0 -- positive transactions
and (name_id, val) not in
(
select name_id, abs(val) val from check_minus
where val < 0 -- negative transactions
);
-- using minus
select name_id, val from check_minus
where val > 0 -- positive transactions
minus
select name_id, abs(val) from check_minus
where val < 0 -- negative transactions
Merci, ça a très bien fonctionné, – Reuben