Bonjour
Base de donnée : SQL server 2008R2
Outil : fenêtre de requête SQL server
Problème :
Je bloque sur une requête qui me retourne l'erreur (ci-dessous) :
Pour le moment je n'ai pas trouvé la solution à ce problème.Msg 1086, Niveau 15, État 1, Ligne 20
La clause FOR XML n'est pas valide dans les vues, les fonctions inline, les tables dérivées et les sous-requêtes lorsque celles-ci contiennent un opérateur défini. Pour contourner ce problème, encapsulez la clause SELECT contenant un opérateur défini au moyen d'une syntaxe de table dérivée et appliquez FOR XML à celle-ci.
Requête 1 :
Le résultat "Résultats dans les grilles" dans SQL server 2008R2 que je voulais :
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
24
25
26
27 SELECT R.id_region as regcode, R.intitule as regint, ( SELECT C1.id_centre as centre_code, C1.intitule as centre_int FROM CENTRE C1 WHERE C1.id_centre = '00001' UNION SELECT C2.id_centre as centre_code, C2.intitule as centre_int FROM CENTRE C2 WHERE C2.id_centre = '00002' ORDER BY centre_code FOR XML AUTO ) as XML_centre FROM REGION R
regcode regint XML_centre A1 ALSACE <centre code="00001">.........</centre> etc... etc... etc...
Cependant ma requête fonctionne sous la forme (ci-dessous) mais elle ne correspond pas au résultat attendu :
Requête 2 :
Ci-joint les scripts (un jeu de test pour l'exemple / la requête ) pour faciliter votre aide
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 SELECT C1.id_centre as centre_code, C1.intitule as centre_int FROM CENTRE C1 WHERE C1.id_centre = '00001' UNION SELECT C2.id_centre as centre_code, C2.intitule as centre_int FROM CENTRE C2 WHERE C2.id_centre = '00002' ORDER BY centre_code FOR XML AUTO
Script_exemple.sql
Script_requete.sql
Pouvez-vous m'aider à faire fonctionner la requête 1 ?
Merci d'avance pour vos réponses et bonne journée
Partager