6
votes

Pivot sur l'expression de table commune

J'ai un CTE comme suit xxx

ce qui précède renvoie la sortie suivante xxx

Je veux appliquer pivot (ou quoi que ce soit La meilleure option) afin que je puisse obtenir une sortie comme suit xxx

Description ici Objectifs ici Spécification ici Configuration requise ici

Pls. suggère.

merci


1 commentaires

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.


3 Réponses :


4
votes

faire quelque chose comme: xxx


2 commentaires

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.



7
votes

Vous faites ceci: xxx

ou vous pouvez l'ajouter à votre CTE, comme celui-ci: xxx


0 commentaires

4
votes
  -- cte here as above
  SELECT  Description
         ,Objectives
         ,Specification
         ,Requirements
  FROM    cte_1 PIVOT ( max(Words) FOR ReferenceName IN ( Description,
                                                          Objectives,
                                                          Specification,
                                                          Requirements ) ) AS PivotTable

4 commentaires

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) ) au lieu de [mots] ; ou nvarchar (4000) si 4000 suffit


Ou à l'intérieur CTE_1 SELECT; moulage ([mots] comme nvarchar (max))