Bonjour,
Je vous écrit car j'ai l'impression d'avoir perdu mon cerveau...
J'ai une requête qui compare les fichiers dans deux bases différentes et les compares afin de n'afficher que les fichiers manquants dans la base de données numéro deux
Voici ma requête :
J'ai des résultats du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 select noS, listagg(code, ';') WITHIN group (order by code) as liste from ( WITH RB1 AS (select Y.code code, to_char(Y.date_real,'DD/MM/YYYY') dte, Z.act_id as noS, coalesce(y.nb_actes,1) as nbact from act@LIENUN Y, p_t@LIENUN Z where Y.visit_id = Z.visit_id and date_real >= '01/01/2018' and Z.act_id = '213364558'), RB2 AS ( select code_acte||phase_acte||id_activite as code, to_char(heure_acte,'DD/MM/YYYY') as dte, no_s from t_a@LIENDEUX A, t_d@LIENDEUX B, t_s@LIENDEUX C where A.id_s = C.id_s and date_acte >= '01/01/2018' and A.id_acte = B.id_acte and no_s = '213364558') SELECT noS, code ||'-'|| dte ||'x'|| sum(nbact) as code FROM rb1 GROUP BY code, dte, noS MINUS SELECT no_s,code ||'-'|| dte ||'x'|| COUNT(*) as code FROM rb2 GROUP BY code, dte, no_s) group by noS;
Base 1 :
AAAA01-16/10/2018 x5
AAAA02-16/10/2018 x2
BBBB01-16/10/2018 x3
Base 2
AAAA01-16/10/2018 x3
AAAA02-16/10/2018 x4
BBBB01-16/10/2018 x3
Ma requête ne devrait donc me retourner seulement le 'AAAA01' parce que c'est le seul code fichier dont il manque des exemplaires dans la base 2.
Le problème est qu'avec le minus, je me retrouve aussi avec le 'AAAA02' alors que, même si il n'est pas dans le même nombre, il n'est pas manquant dans la base 2
Je ne vois pas comment faire pour n'avoir que le 'AAAA01' en résultat...
Bisous
Partager