Avatar billede aamodtod Nybegynder
09. oktober 2002 - 10:24 Der er 9 kommentarer og
1 løsning

Mange Count, Group by og Summer. Hvordan gjør løser jeg dette?

Jeg har et problem jeg ikke klarer å få løst! Har nå prøvd i to dager, men står helt fast.
Jeg skal ha mange Count fra en tabell med en Group by og Summering i siste rad/kolonne.

Kolonnene i tabellen er:

K_senter    ServiceID

Jeg vil telle antall forskjellige ServiceID og bruke Group By på K_Senter.

Jeg kan telle pr. i dag på 16 forskjellige ServiceID.
Eksempel på ServiceID er:

810Samtale    eposten    Brev        TAM

Jeg ønsker resultatet skrevet ut slik:

K_senter    810Samtale    eposten    Brev        TAM    Totalt
Sarpborg    4300        6        15        20    (Summer alle på Sarpsborg)
Larvik        160        2        20        1500    (Summer alle på Larvik)
Haug        600        4        56        13    (Summer alle på Haug)
Kr.sand    890        6        1        80    (Summer alle på Kr.sand)
-----------------------------------------------------------------------------------------------------------------
SUM        Sum 810    Sum epost    Sum brev    Sum Tam    Sum Totalt


Er det noen som vil hjelpe meg med dette? Det er en gangske stor database og hente ut data fra (ca. 900.000 records), slik at det hadde vært fint med et ”raskt” script til dette.

MVH

Odd
Avatar billede ras2000 Nybegynder
09. oktober 2002 - 12:49 #1
Har du to tabeller? En med K_senter og ServiceID, og en med de andre kolonner, eller hvordan er det bygget op?
Avatar billede aamodtod Nybegynder
09. oktober 2002 - 13:04 #2
En tabell med disse to kolonner. K_senter og ServiceID heter kolonnene.

Odd
Avatar billede ras2000 Nybegynder
09. oktober 2002 - 13:04 #3
Nå, jeg tror jeg har fattet det. Første del af spørgsmålet, at summere over k_senter kan klares med denne
SELECT Tabel1.k_senter, Tabel1.serviceid, Sum(1) AS Udtryk1 FROM Tabel1 GROUP BY Tabel1.k_senter, Tabel1.serviceid;
Der får du en tabel med tre kolonner, hvor første kolonne er k_senter, anden er serviceid, og tredie kolonne er summen af poster med de to værdier.
Når du skriver det, skal du have noget i retning af
<tabel>
<tr>
<td><%=rs("k_senter")%></td>
<td><%if rs("serviceid") = 0 then
response.write rs("udtryk1")
rs.movenext%></td>
<td><%if rs("serviceid") = 1 then
response.write rs("udtryk1")
rs.movenext%></td>
<td><%if rs("serviceid") = 2 then
response.write rs("udtryk1")
rs.movenext%></td>
osv
så skal rs("serviceid") = 0 svare til 810samtale, osv
Avatar billede ras2000 Nybegynder
09. oktober 2002 - 13:08 #4
Den sidste linie skal du så lave med et andet udtræk.
SELECT Tabel1.serviceid, Sum(1) AS Udtryk1 FROM Tabel1 GROUP BY Tabel1.serviceid;
og skrives på samme måde som ovenfor, pånær <td><%=rs("k_senter")%></td>
, der skal vel stå <td>sum</td>
Avatar billede ras2000 Nybegynder
09. oktober 2002 - 13:13 #5
Hov, der mangler en linie i begge to, hvor du skal have summen af al trafikken:
<%sum = 0
do while not rs.eof
<tabel>
<tr>
<td><%=rs("k_senter")%></td>
<td><%if rs("serviceid") = 0 then
response.write rs("udtryk1")
sum = sum + rs("udtryk1")
rs.movenext
end if%></td>
<td><%if rs("serviceid") = 1 then
response.write rs("udtryk1")
sum = sum + rs("udtryk1")
rs.movenext
end if%></td>
<td><%if rs("serviceid") = 2 then
response.write rs("udtryk1")
sum = sum + rs("udtryk1")
rs.movenext
end if%></td>
...
<td><% response.write sum
sum = 0%></td>
<%rs.movenext
loop%>
Der skal nok nogle betingelser ind for at sikre at du ikke rammer eof inde midt i løkken
Avatar billede ras2000 Nybegynder
09. oktober 2002 - 13:14 #6
svar
Avatar billede aamodtod Nybegynder
09. oktober 2002 - 13:35 #7
Jeg tester litt og kommer tilbake

Odd
Avatar billede aamodtod Nybegynder
09. oktober 2002 - 13:51 #8
Flott det var det jeg var ute etter!Takk for hjelpen

Odd
Avatar billede aamodtod Nybegynder
09. oktober 2002 - 14:10 #9
Ooops! Jeg fikk en eof midt inne i løkken. Hvordan løser jeg det?
Avatar billede ras2000 Nybegynder
09. oktober 2002 - 14:17 #10
Jeg tror det nemmeste er at skifte
rs.movenext
ud med
if not rs.eof then rs.movenext
Det skal så stå en del steder, men jeg kan ikke lige se hvordan man kan løse det nemmere eller pænere.
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
Kurser inden for grundlæggende programmering

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