2013-04-13 6 views
2

Je me demande comment transformer une colonne contenant des valeurs de colonne répétitives en lignes dans MSSQL. Voici un exemple de ce que je travaille avec.Répétition de la valeur de la colonne dans la ligne

CREATE TABLE Colors 
(
    Time_ Time, 
    Color varchar(6), 
    count int 
) 

INSERT INTO Colors VALUES ('10:00', 'Red', 2); 
INSERT INTO Colors VALUES ('10:00', 'Orange', 3); 
INSERT INTO Colors VALUES ('10:00', 'Yellow', 6); 
INSERT INTO Colors VALUES ('10:00', 'Green', 9); 
INSERT INTO Colors VALUES ('10:00', 'Blue', 2); 
INSERT INTO Colors VALUES ('11:00', 'Red', 3); 
INSERT INTO Colors VALUES ('11:00', 'Orange', 4); 
INSERT INTO Colors VALUES ('11:00', 'Yellow', 6); 
INSERT INTO Colors VALUES ('11:00', 'Green', 7); 
INSERT INTO Colors VALUES ('11:00', 'Blue', 1); 
INSERT INTO Colors VALUES ('12:00', 'Red', 2); 
INSERT INTO Colors VALUES ('12:00', 'Orange', 2); 
INSERT INTO Colors VALUES ('12:00', 'Yellow', 7); 
INSERT INTO Colors VALUES ('12:00', 'Green', 9); 
INSERT INTO Colors VALUES ('12:00', 'Blue', 4); 

Et SQLFiddle: http://sqlfiddle.com/#!3/48657/1

Ce que je suis à la recherche est une table où les lignes sont Time_, Rouge, Orange, Jaune, Vert, Bleu. Donc, il ressemblerait à quelque chose comme ceci:

Toute aide serait appréciée.

Répondre

3
SELECT Time_, 
     Red, 
     Orange, 
     Yellow, 
     Green, 
     Blue 
FROM 
    (
     SELECT Time_, Color, Count 
     FROM Colors 
    ) orgData 
    PIVOT 
    (
     MAX(Count) 
     FOR Color IN (Red, Orange, Yellow, Green, Blue) 
    ) pvt 
+0

Merci pour votre aide! – StoneRanger

+0

vous êtes les bienvenus ': D' –

Questions connexes