Avatar billede jpi Mester
15. januar 2008 - 10:13 Der er 2 løsninger

Mere SQL

Fortsættelse på spm: http://www.eksperten.dk/spm/810849 og http://www.eksperten.dk/spm/810939

Kort fortalt:
Jeg har følgdende data liggende i en tabel (Test):

ID    Resultat    Prøve
1      1            20
2      1            20
3      2            20
4      3            20
5      2            21

Jeg vil så gerne have det talt sammen så jeg får et udtræk der ser således ud:

Prøve    Antal1    Antal2    Antal3
20          2        1          1
21          0        1          0
22          0        0          0

Dette gør jeg ved følgende:
TRANSFORM Count(Test.Prøve) AS AntalOfPrøve
SELECT Test.Prøve
FROM Test
GROUP BY Test.Prøve
PIVOT Test.Resultat;

og så køre en forespørgsel "over" den ovenstående:
SELECT Test_krydstabulering.Prøve, IIf(IsNull([1]),0,[1]) AS antal1, IIf(IsNull([2]),0,[2]) AS antal2, IIf(IsNull([3]),0,[3]) AS antal3
FROM Test_krydstabulering

Så kommer der 0'er med og alle kolonner fra den første vises.
MEN, hvis der ikke er nogen resultater med tallet 3 er der ikke nogen kolonne med 3 i den første sætning og så fejler sætning nr. 2.

Hvordan kan dette løses ?
Avatar billede jesperthomsen Nybegynder
29. januar 2008 - 10:13 #1
Du skal bruge iif. Lav en grupperet forespørgsel og vælg feltet Prøve. Den foreslår selv Grupperet efter og det skal du bare beholde.

Så skal du lave et nyt felt der skal se sådan her ud:
Antal1: sum(iif(resultat=1;1;0)) og det skal være et Udtryk, ikke grupperet efter.

Antal2 og antal3 skal laves på samme måde.
Avatar billede jpi Mester
29. januar 2008 - 10:29 #2
En mere SQL-mæssig korrekt løsning kunne være følgende (som jeg fandt igår):
PIVOT Test.Resultat In ("1","2","3")
i stedet for den sidste PIVOT-linie i den første forespørgsel
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