Avatar billede funkystuff Nybegynder
13. marts 2008 - 22:56 Der er 11 kommentarer

Rækker til kolonner

Jeg er helt "basis"-bruger af Access - dvs. ingen sql osv.

Jeg har data i rækker, hvor nogle felter skal grupperes og lægges i kolonner.

Eks.
Kunde1  telefon1
Kunde1  telefon2
Kunde1  telefon3
Kunde2  telefon4
Kunde2  telefon5
Kunde3  telefon6

Skal konverteres til:
Kunde1  telefon1  telefon2  telefon3
Kunde2  telefon4  telefon5
Kunde3  telefon6

Forslag? - hvilken funktion skal jeg bruge?
Avatar billede kabbak Professor
13. marts 2008 - 23:52 #1
du er nød til at have en hjælpekolonne

Kunde    Telefon          HjælpeKol
Kunde1     telefon1    1
Kunde1     telefon2    2
Kunde1     telefon3    3
Kunde2     telefon4    1
Kunde2     telefon5    2
Kunde3     telefon6    3

så en krydstabuleringsforespørgsel, som ser sådan ud

TRANSFORM First(Tabel2.Telefon) AS FørsteOfTelefon
SELECT Tabel2.Kunde
FROM Tabel2
GROUP BY Tabel2.Kunde
PIVOT Tabel2.nr;
Avatar billede kabbak Professor
13. marts 2008 - 23:53 #2
den skulle være sådan

Kunde    Telefon    HjælpeKol
Kunde1    telefon1    1
Kunde1    telefon2    2
Kunde1    telefon3    3
Kunde2    telefon4    1
Kunde2    telefon5    2
Kunde3    telefon6    1
Avatar billede Slettet bruger
14. marts 2008 - 00:05 #3
eller uden hjælpekolonne:

TRANSFORM KundeTabel.Kunde
SELECT KundeTabel.Kunde
FROM KundeTabel
GROUP BY KundeTabel.Kunde
PIVOT KundeTabel.Telefon;
Avatar billede Slettet bruger
14. marts 2008 - 00:07 #4
Dette giver dog et resultat hvor man får alle telefonerne ud af, det er dette kabbak minimerer ved at lægge et kolonne nummer på, så får man maks. det antal kolonner!~)
Avatar billede Slettet bruger
14. marts 2008 - 00:09 #5
men lige præcis den opstilling du ønsker er noget, som access har lidt problemer med...
Avatar billede Slettet bruger
14. marts 2008 - 00:11 #6
ved du forresten hvad du skal gøre med de sql'er som vi har smidt efter dig?~)
Avatar billede funkystuff Nybegynder
14. marts 2008 - 07:37 #7
Tak hurtige input. Jeg er dog ikke klar over hvad jeg gør med udtrykkene... Mit niveau er mere på "designvisning"-niveau og den indbyggede Build-funktion.

Jeg har dog ca. 4000 rækker, så det vil tage noget tid at lave hjælpekolonner. Der er desuden op til 25 forskellige "telefonnumre", hvilket gjorde tabellen uoverskuelig ved alm. krydstabulering af disse.
Avatar billede jensen363 Forsker
14. marts 2008 - 10:14 #8
spg´s løsning svarer til pivot-tabeller i excel, hvis du kender til dette
Avatar billede jensen363 Forsker
14. marts 2008 - 10:24 #9
Hjælpekolonnen i kabbak´s eksempel gør, af telefonnumrene indordnes under hinanden
Avatar billede kabbak Professor
14. marts 2008 - 15:22 #10
Hvis du tager tabellen over i excel, er det nemt at koble hjælpekolonnen på, data skal være sorteret på Navn


  A          B            C
Kunde    Telefon        Hjælpekolonne
Kunde1    telefon1    1
Kunde1    telefon2    2
Kunde1    telefon3    3
Kunde2    telefon4    1
Kunde2    telefon5    2
Kunde3    telefon6    1


Formlen for C2 er =HVIS(A2=A1;C1+1;1), den trækkes så nedad til slut data.

gem regnearket.

Aben access og importer excel arket ind som tabel2

vælg ny forespørgsel
Du skal ikke vælge nogen tabel, bare luk
Avatar billede kabbak Professor
14. marts 2008 - 15:27 #11
Nå jeg blev ikke færdig;-))

Oppe under filer,i menuen, står der nu SQL, tryk der.
når den er åbnet står der SELECT;
Slet det og sæt denne kode ind

TRANSFORM First(Tabel2.Telefon) AS FørsteOfTelefon
SELECT Tabel2.Kunde
FROM Tabel2
GROUP BY Tabel2.Kunde
PIVOT Tabel2.Hjælpekolonne;

kør så forespørgslen

så skulle du kunne se data, som du ønskede det.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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