Uden at vide det, tror jeg det du ønsker er en COUNT(DISTINCT Nr) funktion. Altså en funktion, som tæller antallet at unikke numre (hvis der er 10 rækker med nr. 1 tæller det kun 1 gang). Desværre er det ikke en funktion, som Access understøtter, så du bliver nødt til at gå en omvej, f.eks.:
SELECT COUNT(*) AS AntalNr, Måned FROM [SELECT DISTINCT Antal, Month(Dato) AS Måned FROM dinTabel]. AS Tmp GROUP BY Måned
Du kunne også have gjort det som man normalt ville gøre sådan noget i Access:
1) Opret en forespørgsel med distinct, f.eks.:
DistData: SELECT DISTINCT Antal, Month(Dato) AS Måned FROM dinTabel
2) Herefter ku' du oprette en ny forespørgsel, som i stedet for direkte at basere sig på din tabel i stedet baserer sig på forespørgslen:
DistCount: SELECT COUNT(*) AS AntalNr, Måned FROM DistData GROUP BY Måned
Som du kan se, er det reelt det samme som den første forespørgsel, bare delt op i to på hinanden baserende forespørgsler. Det er normalt den måde man gør det på i Access, da den har meget dårlig understøttelse af den anden måde at gøre det på. Og med mindre det er en dynamisk opbygget forespørgsel (som det ofte er ved f.eks. web-forespørgsler), gør det heller ikke noget. Ved dynamisk opbyggede forespørgsler når man desværre hurtigt "muren" med Access. Her skal der noget stærkere værktøj (en bedre database) til.
Hmm....jeg prøver med en anden forklaring for I skyder begge ved siden af.
Select (Select Count(nr) where dato between 01-01-08 and 31-01-08) As jan, (Select Count(nr) where dato between 01-02-08 and 29-02-08) As feb, (Select Count(nr) where dato between 01-03-08 and 31-03-08) As mar ..... frem til og med Dec.
Det her ser jo godt ud men det virker ikke i Access2003.
Din SQL burde nu nok virke i Access (bortset fra, at datoformatet skal afgrænses af #.
Jeg ville nok gøre det sådan i stedet:
SELECT SUM(IIF(MONTH(dato)=1,1,0)) AS jan, SUM(IIF(MONTH(dato)=2,1,0)) AS feb, SUM(IIF(MONTH(dato)=3,1,0)) AS mar, SUM(IIF(MONTH(dato)=4,1,0)) AS apr, SUM(IIF(MONTH(dato)=5,1,0)) AS maj, SUM(IIF(MONTH(dato)=6,1,0)) AS jun FROM dinTabel WHERE YEAR(dato)=2008
Den tæller alle rækker (altså det samme som COUNT(*)). Hvis der er en grund til, at du har brugt COUNT(nr), f.eks. hvis nogle af rækkerne har et nr sat til NULL, kan det være nødvendigt også at teste for NULL i IIF sætningen:
IIF(nr IS NOT NULL AND MONTH(dato)=2,1,0)
Grunden til at du har brugt COUNT(nr) er dog sandsynligvis bare, at du har hørt, at det skal man gøre (hvilket jeg aldrig rigtigt har forstået, men det er sikkert min fejl :-))
Nej, hverken kønt eller nødvendigt. Men du sidder jo ved styrepinden... :-)
Synes godt om
Ny brugerNybegynder
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.