Alimenter champ si première occurence /Première occurrence d'une
Résolu
Decon
Messages postés
91
Date d'inscription
Statut
Membre
Dernière intervention
-
cyril1982 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
cyril1982 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Le titre n'est pas très explicite, mais je vais essayer d'être plus clair.
Soit la requête suivante:
Qui donne le résultat:
Alors que je veux:
En Gros , que je n'ai insert ou update que sur la première occurrence pour chaque part_n donné (en simple requête sql).
Je vous remercie d'avance.
Le titre n'est pas très explicite, mais je vais essayer d'être plus clair.
Soit la requête suivante:
SELECT
decode(t.champ1, 'UPDATE', 'M', 'INSERT', 'C', NULL),
decode(a.champ1, 'UPDATE', 'M', 'INSERT', 'C', NULL),
decode(v.champ1, 'UPDATE', 'M', 'INSERT', 'C', NULL)
t.PAR_N,
a.ID_A,
v.ID_V,
FROM TABLE_T t, TABLE_G g, TABLE_A a, TABLE_V v
WHERE t.ID_G1 = g.ID_G1E (+)
AND t.champ2 = g.champ2 (+)
AND g.ID_G1E = a.ID_G2 (+)
AND g.champ2 = a.champ2 (+)
AND v.ID_A (+) = a.ID_A
AND v.champ2 (+) = a.champ2
Qui donne le résultat:
INSERT INSERT INSERT 51838 80909 224261
INSERT INSERT 51838 80910
INSERT INSERT 51838 80911
INSERT INSERT 51838 80912
UPDATE INSERT INSERT 51834 80896 224258
UPDATE INSERT 51834 80897
UPDATE INSERT 51834 80898
UPDATE INSERT INSERT 51834 80921 224265
Alors que je veux:
INSERT INSERT INSERT 51838 80909 224261
INSERT 51838 80910
INSERT 51838 80911
INSERT 51838 80912
UPDATE INSERT INSERT 51834 80896 224258
INSERT 51834 80897
INSERT 51834 80898
INSERT INSERT 51834 80921 224265
En Gros , que je n'ai insert ou update que sur la première occurrence pour chaque part_n donné (en simple requête sql).
Je vous remercie d'avance.
A voir également:
- Alimenter champ si première occurence /Première occurrence d'une
- Telecharger adobe premiere pro gratuit windows 10 - Télécharger - Montage & Édition
- Impossible d'ouvrir le fichier sur le disque premiere pro - Forum Montage et acquisition vidéo
- Comment supprimer la première page sur word - Guide
- Dans le document à télécharger : affichez l'ensemble des diapositives à l'écran avec 5 diapositives par ligne. repérez le groupe de 3 diapositives avec une fleur identique alignées verticalement, supprimez la première d'entre elles. un nouveau groupe de 3 diapositives avec une fleur identique alignées verticalement apparaît, supprimez encore la première d'entre elles. déplacez les 3 premières diapositives de la 4e ligne au début de la présentation. quel mot est formé par les lettres de la première colonne ? - Forum Python
- Groupe d'options - Forum Access
2 réponses
Bonsoir,
Je pense que tu peux t'en sortir avec un ROW_NUMBER.
Ta requête devrait ressembler à :
Grâce au row_number tu peux faire une action spécifique pour la première occurrence de PAR_N.
Voilà ! En espérant avoir bien compris ce que tu voulais obtenir.
Je pense que tu peux t'en sortir avec un ROW_NUMBER.
Ta requête devrait ressembler à :
select case when my_id = 1 then col1 else null end, case when my_id = 1 then col2 else null end, case when my_id = 1 then col3 else null end, PAR_N, ID_A, ID_V from ( SELECT decode(t.champ1, 'UPDATE', 'M', 'INSERT', 'C', NULL) as col1, decode(a.champ1, 'UPDATE', 'M', 'INSERT', 'C', NULL) as col2, decode(v.champ1, 'UPDATE', 'M', 'INSERT', 'C', NULL) as col3 t.PAR_N, a.ID_A, v.ID_V, ROW_NUMBER() OVER (PARTITION BY t.PAR_N ORDER BY a.ID_A) AS my_id FROM TABLE_T t, TABLE_G g, TABLE_A a, TABLE_V v WHERE t.ID_G1 = g.ID_G1E (+) AND t.champ2 = g.champ2 (+) AND g.ID_G1E = a.ID_G2 (+) AND g.champ2 = a.champ2 (+) AND v.ID_A (+) = a.ID_A AND v.champ2 (+) = a.champ2 ) as new_table
Grâce au row_number tu peux faire une action spécifique pour la première occurrence de PAR_N.
Voilà ! En espérant avoir bien compris ce que tu voulais obtenir.