Vända data

Databaser & SQL

2 svar · 450 visningar · startad av Vide

Medlem sedan dec. 19998 577 inlägg
Trådstart#1

Hejsan,

Som en förlängning, eller rättare sagt en variant på http://www.webforum.nu/showthread.php?t=174965

Jag vill nu kunna få detta data:
ID, Q1, Q2, Q3
1, 5, 3, 5
2, 4, 1, 3
3, 5, 2, 3

... att se ut såhär:
ID, Column, Value
1, Q1, 5
1, Q2, 3
1, Q3, 5
2, Q1, 4
2, Q2, 1
2, Q3, 3
3, Q1, 5
3, Q2, 2
3, Q3, 3

Hur gör jag detta lättast i SQL-server 2005?

Medlem sedan aug. 20039 340 inlägg
#2

Ett sätt är att trixa lite med unions. Visserligen blir kolumnnamnet hårdkodade i frågan, men de lär ju inte ändras stup i kvarten ändå.

(SELECT id AS id, 'Q1' AS columnname, Q1 AS value FROM tabellnamn WHERE ...)
UNION ALL
(SELECT id AS id, 'Q2' AS columnname, Q2 AS value FROM tabellnamn WHERE ...)
UNION ALL
(SELECT id AS id, 'Q3' AS columnname, Q3 AS value FROM tabellnamn WHERE ...)

Edit, ändrade column till columnname för att undvika eventuella krockar med reserverade keywords.

Medlem sedan dec. 19998 577 inlägg
#3

Tackar nitro2k01!

Hittade ett annat sätt också:

select ID, Column, Value from
(select ID, Q1, Q2, Q3 from p_Data) as t
unpivot (Value for Column in(Q1, Q2, Q3)) as unpvt
493 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
238 ms — deklarationer (db)
125 ms — hämta statistik (db)
125 ms — hämta tråd, inlägg och bilagor (db)
206 ms — ändringar (db)