À l'aide de l'UNION de TOUS dans le STUFF / XML Path
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 lorsqu'ils contiennent un ensemble d'opérateur. Pour contourner ce problème, envelopper le SÉLECTIONNER contenant un opérateur à l'aide de la table dérivée de la syntaxe et de l'appliquer POUR XML.
J'obtiens cette erreur quand je lance ceci:
SELECT
STUFF((
SELECT 1
UNION ALL
SELECT 2
FOR XML PATH('')
),1,0,'') [COLUMN]
fonctionne très bien lorsque je l'exécute (sans l'Union de TOUS)
SELECT
STUFF((
SELECT 1
FOR XML PATH('')
),1,0,'') [COLUMN]
Des suggestions pourquoi l'UNION de TOUS Ne fonctionne pas, ou la façon de l'obtenir pour fonctionner à l'intérieur de la STUFF()
?
OriginalL'auteur Control Freak | 2012-02-06
Vous devez vous connecter pour publier un commentaire.
Il y a une solution simple pour cela, vous devez emballer votre requête union(ou de toute table dérivée d'ailleurs) avec un autre select. Faire et ensuite continuer la sintax normalement:
Quelque chose comme ceci est ce que vous êtes à la recherche de:
J'ai vérifié et il fonctionne parfaitement
Quelles sont les alias
I
etJ
?Je crois qu'ils ne sont pas nécessaires, je les ai mis juste au cas où. Si vous les mettez, vous pouvez vous référer à la table dbo.Table1 comme j dans de futures références. Cependant, le k EST NÉCESSAIRE, car si il n'était pas là, il n'y aurait aucun moyen de consulter les colonnes de la sous-requête.
OriginalL'auteur Gaspa79