Tableau croisé dynamique des chaînes de grouper sous pivot de la colonne?
JOB ENAME
-------- ----------
ANALYST SCOTT
ANALYST FORD
CLERK SMITH
CLERK ADAMS
CLERK MILLER
CLERK JAMES
MANAGER JONES
MANAGER CLARK
MANAGER BLAKE
PRESIDENT KING
SALESMAN ALLEN
SALESMAN MARTIN
SALESMAN TURNER
SALESMAN WARD
Je voudrais formater le jeu tel que chaque tâche dispose de sa propre colonne:
CLERKS ANALYSTS MGRS PREZ SALES
------ -------- ----- ---- ------
MILLER FORD CLARK KING TURNER
JAMES SCOTT BLAKE MARTIN
ADAMS JONES WARD
SMITH
J'ai essayé
SELECT ANALYST, CLERK, MANAGER, PRESIDENT, SALESMAN from
(
SELECT ename, job from emp
) as st
pivot
(
SELECT ename
FOR job in (ANALYST, CLERK, MANAGER, PRESIDENT, SALESMAN)
) as pivottable
J'obtiens ces erreurs
Msg 156, Niveau 15, État 1, Ligne 7
Syntaxe incorrecte près du mot clé 'SELECT'.
Msg 156, Niveau 15, État 1, Ligne 8
Syntaxe incorrecte près du mot clé 'dans'.
Comment utiliser le pivot au groupe de cordes sous pivot de la colonne?
des commentaires à ce sujet? Rien n'est mauvais dans ma question.
C'était une question intéressante, bien sûr. +1 de moi...
C'était une question intéressante, bien sûr. +1 de moi...
OriginalL'auteur mr_eclair | 2013-03-11
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez le
PIVOT
fonction, vous devez utiliser une fonction d'agrégation. La syntaxe d'unePIVOT
est:De MSDN:
Avec une chaîne, vous aurez besoin d'utiliser soit le
MIN()
ouMAX()
fonction d'agrégation. Le problème que vous rencontrerez est que ces fonctions retournent une seule valeur pour chaque colonne.Afin d'obtenir le
PIVOT
de travail, vous devez fournir une valeur distincte qui va garder les lignes séparées au cours de laGROUP BY
.Pour votre exemple, vous pouvez utiliser
row_number()
:Voir SQL jouer avec la Démo.
La
row_number()
crée une valeur distincte qui est attribué à chaque ligne dans lajob
, lorsque vous appliquez la fonction d'agrégation et laGROUP BY
dans lePIVOT
vous obtiendrez toujours des lignes distinctes.OriginalL'auteur Taryn