SQL Server - Transposer les lignes en colonnes
J'ai cherché haut et bas pour une réponse à cette alors, toutes mes excuses si c'est déjà répondu!
J'ai le résultat suivant à partir d'une requête dans SQL 2005:
ID
1234
1235
1236
1267
1278
Ce que je veux, c'est
column1|column2|column3|column4|column5
---------------------------------------
1234 |1235 |1236 |1267 |1278
Je n'arrive pas à obtenir ma tête autour de l'opérateur pivot, mais il semble que ça va être impliqués. Je peux travailler avec il y a seulement 5 lignes pour le moment, mais un bonus serait pour qu'il soit dynamique, c'est-àdire à l'échelle de x lignes.
EDIT:
Ce que je suis, finalement, après affectation de valeurs de chaque colonne de variables, par exemple
DECLARE @id1 int, @id2 int, @id3 int, @id4 int, @id5 int
SELECT @id1 = column1, @id2 = column2, @id3 = column3, @id4 = column4,
@id5 = column5 FROM [transposed_table]
- Possible de répéter: [stackoverflow.com/questions/7002069/... [1]: stackoverflow.com/questions/7002069/...
- Double Possible de moyen Simple de transposer des colonnes et des lignes dans Sql?
Vous devez vous connecter pour publier un commentaire.
Vous avez également besoin d'un champ de valeur dans votre requête pour chaque id d'agréger sur. Ensuite, vous pouvez faire quelque chose comme ceci
Je pense que vous trouverez la réponse dans cette réponse à une question légèrement différente: Générer "nuage de points" résultat de membres à l'encontre des ensembles de requêtes SQL
La réponse utilise le SQL Dynamique. Découvrez le dernier maillon de mellamokb réponse: http://www.sqlfiddle.com/#!3/c136d/14 où il crée des noms de colonne à partir de la ligne de données.
Dans le cas où vous avez un groupe de données à plat de la structure que vous souhaitez transposer, comme tel:
Et que vous souhaitez son groupe de transposition à ressembler à:
Vous pouvez accomplir cela avec une requête comme ceci:
(1) Cela suppose que vous savez à l'avance les colonnes que vous voulez — notez que j'ai volontairement laissé de côté ID = 1289 à partir de cet exemple
(2) il utilise essentiellement un tas de jointures externes gauches pour ajouter 1 colonne à la fois, créant ainsi une transposition. Les jointures externes gauches (plutôt que des jointures internes) pour certaines colonnes sont nulles si elles n'ont pas les valeurs correspondantes de la table à plat, sans affecter les colonnes suivantes.