Bonjour,
Je souhaiterais utiliser une requête SQL pour créer une vue à partir d'une autre vue notamment.
Le contexte est le suivant: mon système gère des contrats liés à des activités (1 contrat peut être lié à 1 ou plusieurs activités). Chaque activité est liée à un "domaine" (1 activité peut être lié à 1 ou plusieurs domaines).
J'ai une 1ère vue basé sur les tables de ma base de données afin d'obtenir les lignes contrats liés aux activités et aux domaines:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT c.Id_CONTRAT, a.Id_ACTIVITE, a.Id_DOMAINE FROM LIEN_CONTRAT_ACTIVITE c, activite a WHERE c.Id_CONTRAT = a.Id_CONTRAT
Id_CONTRAT Id_ACTIVITE Id_DOMAINE 1 118 2 2 266 2 2 269 3 3 272 3 4 275 5 4 283 8 4 301 8
J'effectue la requête suivante:
Ceci me permet d'obtenir les résultats sous une certaine forme. Cette query est opérationnelle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT id_contrat, LISTAGG(id_domaine, ';') WITHIN GROUP (ORDER BY id_domaine) AS id_domaine FROM (SELECT id_contrat, id_domaine FROM VUE_CONTRAT_ACTIVITE_DOMAINE WHERE Id_CONTRAT IS NOT NULL GROUP BY id_contrat, id_domaine) GROUP BY id_contrat
Titre_CONTRAT Id_DOMAINE Contrat 1 2 Contrat 2 2;3 Contrat 3 3 Contrat 4 5;8
Par contre si je récupère cette query pour créer une vue avec SQL Developer, j'obtiens l'erreur suivante:
SQL Parse Results:
Je ne sais pas si ceci est dû au fait que j'appelle une vue pour créer cette vue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Error(s) parsing SQL: Unexpected token near *!* in the following: SELECT id_contrat, LISTAGG(id_domaine, ';') WITHIN *!*GROUP (ORDER BY id_domaine) AS id_domaine Unexpected token near *!* in the following: SELECT id_contrat, LISTAGG(id_domaine, ';') WITHIN *!*GROUP (ORDER BY id_domaine) AS id_domaine Missing expression near *!* in the following: SELECT id_contrat, LISTAGG(id_domaine, ';') WITHIN *!*GROUP (ORDER BY id_domaine) AS id_domaine
Pourriez-vous m'aider à résoudre ce problème?
Merci d'avance,
Partager