Bonjour,
J'avais effectuer un premier bout de code SQL afin de récupérer :
La liste des noms d'organisation commence par HRE- et comportant juste 1 lettre après le tiret (comme HRE-A et non HRE-AB )
Combien de personnes travaille pour chaque organisation
La somme des personnes qui travaillent dans les différentes organisation
Pour chaque organisation indiquait les catégories qui sont prise ( ex : Manpower Assig., National Space Agency, Permanent, ...)
Voici mon 1er code :
Cela donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT DISTINCT SUBSTR(WFORGUNIT_CODE, 0, 5), COUNT(WFORGUNIT_ID), SUM(COUNT(WFORGUNIT_ID)) OVER(), LISTAGG(DISTINCT WFCAT_DESC, '--') FROM WFORGUNITS INNER JOIN WFPOSITIONS ON WFORGUNITS.ID = WFPOSITIONS.WFORGUNIT_ID INNER JOIN WFRPERASS ON WFPOSITIONS.ID = WFRPERASS.WFPOSITION_ID INNER JOIN WFCATS ON WFPOSITIONS.WFCAT_ID = WFCATS.ID WHERE SUBSTR(WFORGUNIT_CODE, 0, 4) = 'HRE-' AND WFRPERASS.WFRPERASS_ENDT >= SYSDATE AND WFRPERASS.WFRPERASS_STDT <= SYSDATE GROUP BY SUBSTR(WFORGUNIT_CODE, 0, 5)
HRE-C 7 269 Manpower Assig.--National Space Agency--Permanent HRE-M 37 269 Manpower Assig.--Permanent--Service Contractor HRE-O 59 269 Consultant--Manpower Assig.--National Space Agency--Permanent--Service Contractor--Young Grad. Trainees HRE-P 69 269 Int. Research Fellow--Manpower Assig.--Permanent--Service Contractor HRE-Q 6 269 Permanent HRE-R 42 269 Manpower Assig.--Permanent--Service Contractor HRE-S 16 269 Int. Research Fellow--Manpower Assig.--Permanent--Service Contractor HRE-X 33 269 Manpower Assig.--Permanent--Young Grad. Trainees
Maintenant j'aimerai rajouter une autre colonne qui indique combien il y aurai de personnes dans chaque catégories ( les Manpower Assig., National Space Agency, ... )
J'ai donc repris le même code sql et rajouter 2 lignes (en rouge) :
L'erreur que cela génère : SQL Error [934] [42000]: ORA-00934: fonction de groupe non autorisée ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT DISTINCT SUBSTR(WFORGUNIT_CODE, 0, 5), COUNT(WFORGUNIT_ID), SUM(COUNT(WFORGUNIT_ID)) OVER(), LISTAGG(DISTINCT WFCAT_DESC, '--'), LISTAGG(COUNT(WFORGUNIT_ID), '--') FROM WFORGUNITS INNER JOIN WFPOSITIONS ON WFORGUNITS.ID = WFPOSITIONS.WFORGUNIT_ID INNER JOIN WFRPERASS ON WFPOSITIONS.ID = WFRPERASS.WFPOSITION_ID INNER JOIN WFCATS ON WFPOSITIONS.WFCAT_ID = WFCATS.ID WHERE SUBSTR(WFORGUNIT_CODE, 0, 4) = 'HRE-' AND WFRPERASS.WFRPERASS_ENDT >= SYSDATE AND WFRPERASS.WFRPERASS_STDT <= SYSDATE GROUP BY SUBSTR(WFORGUNIT_CODE, 0, 5), LISTAGG(DISTINCT WFCAT_DESC, '--')
En me renseignant un peu j'ai penser que je devais utiliser un HAVING mais cela me procure une autre erreur : SQL Error [920] [42000]: ORA-00920: opérateur relationnel non valide
En espérant avoir été plus ou moins clair, j'aurais aimer savoir si quelqu'un aurait une piste de réflexion ou quelque chose comme
Merci Bien







Répondre avec citation


N'oubliez pas le bouton
et pensez aux balises [code]


Partager