bonjour,
je dispose d'une requête , permettant de récupérer le nom, prenom et le nombre d'heure déclaré des personnes d'une entreprise, par année.
Afin de récupéré le nombre d'heure, j'ai établi une sous requête, mais j'ai constaté que parfois il me fait une erreur "ORA-01427: sous-requête ramenant un enregistrement de plus d'une ligne ".
j'ai compris ce que ça voulait dire, car il se trouve, que lorsque je compare avec mon logiciel, dans mon logiciel on peut avoir deux ligne, dans une même année, par exemple :
nom prenom année nbheure
Croc Odile 2018 1640
Croc Odile 2018 17
Gerard 1800
bernard 1500
Luc
.....
Ceci est un exemple, pour vous expliquer le contexte et donc voici ma requete :
Ce que j'aimerais faire c'est si ma sous requête est suceptible de ramener plus d'une ligne, comme je selectionne des chiffres, de faire la somme mais si la sous requete ramène qu'une ligne, de garder le chiffre tel quel;
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
16
17
18
19
20
21
22
23 SELECT distinct sal.numcontrat as "NUM", ... as NOM, .... as PRENOM, .... as annee, ( select t1.nbheure from table1 t1 inner join tableannee t2 on t1.idreft2 = t2.d010_id inner join ....... t3 on t1.idcontrat = t3.=id inner join ........ t4 on t3.id2 = t4.id inner join ........ t5 on t5.id=t1.idreft5 inner join ........ t6 on t6.id=t5.idrefent where annee =2016 AND t6.id = ta.id ) as "montant 2016" FROM ... inner join....... inner join........ inner join ........ trel on... inner join table ta on ta.id = trel.idref1 ;
Vous me direz " faire un sum(t1.nbheure) mais si je fais ça, dans mon fichier excel que j'exporte, je vais avoir le total des heures par salarié or je souhaite avoir le détails.
En faisant le sum, dans mon fichier excel j'ai pu vérifier les totaux sont bon, mais moi je souhaite seulement le détails, je fais le total juste pour vérification.
Pour palier au problème que j'ai cité avant, j'ai tenté de modifié la jonction avec la requête principal et j'ai rajouté un "rownum=1" mais ça fausse mes résultat.
La requête tourne mais si je met le rownum, si une personne a par exemple 0 et 15 , la requête ne prendra en compte que 0 et donc pour peu que 2 ou 3 personnes possèdent deux lignes , mes totaux seront faux, donc vérification ko.
J'avais pensé à une chose, dans la sous requête, un case à savoir si par exemple pour une personne donnée, il a declaré 0 puis 12 ne prendre en compte que 12.
merci pour vos lumières.
Partager