Avatar billede luftballon Nybegynder
18. april 2004 - 21:48 Der er 2 kommentarer og
1 løsning

Kolonnenavn og værdi som række i en ny tabel

Hej

Jeg har brug for et sql script der kan vende en tabel om, så kolonner fremgår som rækker i stedet.

Dvs hvis jeg har en tabel som sådan:

Tabel1
rowId
Col1
Col2
Col3

Så skal den se sådan ud når jeg har kørt scriptet

Tabel2
rowId
ColNavn
Værdi

Rowid er et fortløbende nummer. Alle kolonner er af typen int

Scriptet skal altså for hver række og hver kolonne i tabel1 tage kolonnenavnet og dens værdi og indsætte dette som en ny række i tabel2.

På forhånd tak
Avatar billede trer Nybegynder
18. april 2004 - 23:23 #1
Det du mangler er en pivotabel-funktion - den findes bare ikke i MsSQL :-(  Men du kan trække dine data ud således:

select rowid, 'col1' as [colnavn], col1 as [værdi] from tabel1
union all
select rowid, 'col2' as colnavn, col2 from tabel1
union all
select rowid, 'col3' as colnavn, col3 from tabel1
Avatar billede trer Nybegynder
18. april 2004 - 23:27 #2
fortsat: Du er altså nød til at skrive den hvor hver tabel du vil dreje og performance vil ikke være sådan rigtig god - men vel acceptabel...

Du burde kunne oprette en ny tabel ved blot at lave denne sql

select * into tabel2
from (
select rowid, 'col1' as [colnavn], col1 as [værdi] from tabel1
union all
select rowid, 'col2' as colnavn, col2 from tabel1
union all
select rowid, 'col3' as colnavn, col3 from tabel1
) as X

Hvis du har behov for mange af disse kan du lave en procedure der scripter ovenstående ved at slå op i SYSTEM_INFORMATION.TABLES - det er tabel metadata i SQL Server - men det bliver rimelig avanceret procedural sql du skal lege med.
Avatar billede luftballon Nybegynder
22. maj 2004 - 13:41 #3
lavede en lille app. det gjorde det. Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester