Avatar billede devmann Nybegynder
20. november 2003 - 21:54 Der er 13 kommentarer og
2 løsninger

Vende data i sql

Jeg har brug for at få vendt data i en tabel, hvor data ser sådan ud …

Tabel: Adresser

ID    Group          Value
1    Navn          Holger Hansen
1    Adresse          Peter Just vej 34
1    Nationalitet  DK
2    Navn          Peter Jensen
2    Adresse          Knudsgade 23
2    Nationalitet  DK


Så de vender på denne måde ..

Navn        Adresse                Nationalitet
Holger Hansen    Peter Just vej 34    DK
Peter Jensen    Knudsgade 23            DK

Hvordan laver man en sql tl at vende disse data med ???

MVH Devmann
Avatar billede Slettet bruger
20. november 2003 - 22:05 #1
Et bud ... men jeg aner ikke om det virker :-)
select value from adresser where group='navn'
union
select value from adresser where group='adresse'
union
select value from adresser where group='nationalitet'
Avatar billede kabbak Professor
20. november 2003 - 22:07 #2
krydstabulerings forespørgsel

TRANSFORM First(Navn.Value) AS FørsteOfValue
SELECT Navn.ID
FROM Navn
GROUP BY Navn.ID
PIVOT Navn.Group;
Avatar billede kabbak Professor
20. november 2003 - 22:08 #3
navn er tabellens navn
Avatar billede dk_akj Nybegynder
20. november 2003 - 22:09 #4
Her er et eksempel i access2000

http://www.eybye-kjaer.dk/uploads/files/db3.mdb

se query'en navn_gade

//akj
Avatar billede kabbak Professor
20. november 2003 - 22:15 #5
hvis tabellen stadig hedder navn, en alm. forespørgsel

SELECT Navn.Value, Navn_1.Value, Navn_2.Value
FROM (Navn AS Navn_1 INNER JOIN Navn AS Navn_2 ON Navn_1.ID = Navn_2.ID) INNER JOIN Navn ON Navn_1.ID = Navn.ID
GROUP BY Navn.Group, Navn.Value, Navn_1.Group, Navn_1.Value, Navn_2.Group, Navn_2.Value
HAVING (((Navn.Group)="navn") AND ((Navn_1.Group)="adresse") AND ((Navn_2.Group)="Nationalitet"));
Avatar billede Slettet bruger
20. november 2003 - 22:20 #6
Med lidt få tilretninger virker kabbaks sidste forslag til en MS SQL, jeg har rettet den til

SELECT Adresse.Value, Adresse_1.Value, Adresse_2.Value
FROM (Adresse AS Adresse_1 INNER JOIN Adresse AS Adresse_2 ON Adresse_1.ID = Adresse_2.ID) INNER JOIN Adresse ON Adresse_1.ID = Adresse.ID
GROUP BY Adresse.[Group], Adresse.Value, Adresse_1.[Group], Adresse_1.Value, Adresse_2.[Group], Adresse_2.Value
HAVING (((Adresse.[Group])='navn') AND ((Adresse_1.[Group])='adresse') AND ((Adresse_2.[Group])='Nationalitet'));
Avatar billede kabbak Professor
20. november 2003 - 22:22 #7
lidt kortere forespørgsel

SELECT Tabel.Value, Tabel_1.Value, Tabel_2.Value
FROM (Tabel AS Tabel_2 INNER JOIN Tabel AS Tabel_1 ON Tabel_2.ID = Tabel_1.ID) INNER JOIN Tabel ON Tabel_1.ID = Tabel.ID
WHERE (((Tabel.Group)="navn") AND ((Tabel_1.Group)="Adresse") AND ((Tabel_2.Group)="nationalitet"));
Avatar billede devmann Nybegynder
20. november 2003 - 22:24 #8
Jeg har lige testet min sql ser sådan ud ...

TRANSFORM First(Adresser.[Value]) AS FørsteOfValue
SELECT Adresser.ID
FROM Adresser
GROUP BY Adresser.ID
PIVOT Adresser.[Group]

og jeg får disse fejl ...

Server: Msg 170, Level 15, State 1, Line 5
Line 5: Incorrect syntax near 'First'.
Server: Msg 170, Level 15, State 1, Line 9
Line 9: Incorrect syntax near 'PIVOT'.

Hvad er der galt ??
Avatar billede kabbak Professor
20. november 2003 - 22:26 #9
en normal forespørgsel med rigtig tabelnavn
SELECT Adresser.Value, Adresser_1.Value, Adresser_2.Value
FROM (Adresser AS Adresser_2 INNER JOIN Adresser AS Adresser_1 ON Adresser_2.ID = Adresser_1.ID) INNER JOIN Adresser ON Adresser_1.ID = Adresser.ID
WHERE (((Adresser.Group)="navn") AND ((Adresser_1.Group)="adresse") AND ((Adresser_2.Group)="nationalitet"));
Avatar billede kabbak Professor
20. november 2003 - 22:29 #10
uuuu, det er en sql database, jeg kører i access 2000
Avatar billede devmann Nybegynder
20. november 2003 - 22:35 #11
Kabbak .. send lige et svar .. så du kan få dine point!
Avatar billede kabbak Professor
20. november 2003 - 22:36 #12
virker det ?
Avatar billede devmann Nybegynder
20. november 2003 - 22:38 #13
dk_akj .. 50 for hurtig svar men forkert platform!!
Kabbak løber med resten 150.

Tak for hjælpen til alle ...
Avatar billede kabbak Professor
20. november 2003 - 22:43 #14
tak for points ;-))
Avatar billede dk_akj Nybegynder
21. november 2003 - 07:10 #15
takker for point, tænkte bare det var lettere at uploade et .mdb end det ville være med en sqlserver.

Syntaxen er jo den samme :-)

//akj
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