J'ai un CTE comme suit ce qui précède renvoie la sortie suivante p> Je veux appliquer pivot (ou quoi que ce soit La meilleure option) afin que je puisse obtenir une sortie comme suit p> Description ici Objectifs ici Spécification ici Configuration requise ici P> Pls. suggère. p> merci p> p>
3 Réponses :
faire quelque chose comme:
J'ai beaucoup essayé de nombreux postes sur le Web. C'est le seul qui a fonctionné pour moi. On dirait que dans la sélection de personnes non pivotées, il choisit également les champs pivotants, alors peut-être que cela devrait être donné un nom plus générique comme "Ourquery" ... Toujours merveilleux travail !!!
@ Josephdoggie Le problème est la façon dont Pivot implique que toute colonne non dans la partie globale de la clause de pivot doit faire partie du groupe par. En planifiant la version non pivotée (sans colonnes supplémentaires), vous avez un résultat beaucoup plus propre.
Vous faites ceci: ou vous pouvez l'ajouter à votre CTE, comme celui-ci: p>
-- cte here as above
SELECT Description
,Objectives
,Specification
,Requirements
FROM cte_1 PIVOT ( max(Words) FOR ReferenceName IN ( Description,
Objectives,
Specification,
Requirements ) ) AS PivotTable
Obtenir une erreur "Le type de données OPERAND NTEXT n'est pas valide pour l'opérateur Max."
Pouvez-vous lancer à Nvarchars (max)? Ntext est obsolète.
... puis moulage ([mots] comme nvarchar (max) code>) au lieu de [mots] code>; ou nvarchar (4000) si 4000 suffit
Ou à l'intérieur CTE_1 SELECT; moulage ([mots] comme nvarchar (max)) code>
IMHO, Rob Farley's Resole est le meilleur, comme c'est le seul qui fonctionne pour moi. Il semble que la syntaxe est très délicate, presque tout peut le casser.