webForumDet fria alternativet

Vända data

2 svar · 438 visningar · startad av Vide

VideMedlem sedan dec. 19998 577 inlägg
#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?

nitro2k01Medlem sedan aug. 20039 342 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.

VideMedlem 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
135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)