Avatar billede Hamder83 Praktikant
23. august 2010 - 09:45 Der er 23 kommentarer og
1 løsning

Regn sammen?

Hej hvis jeg laver et udtræk hvor jeg siger
select * from kunder where termin <= 9

så jeg vil jeg gerne have den til at regne sammen hvad den samlede præmie sum er.

Hvordan gør jeg det?
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #1
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #2
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #3
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #4
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #5
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #6
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #7
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:42 #8
Den rigtige loesning er nok at lade din app beregne det.

Hvis du absolut vil lave det i SQL, saa maa du lave en UNION med brug af SUM.

Eks.:

SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel
Avatar billede arne_v Ekspert
23. august 2010 - 10:44 #9
Hov - undskyld de mange kopier - havde lige et lille netvaerksproblem.
Avatar billede Hamder83 Praktikant
23. august 2010 - 10:59 #10
Hej Arne

Det var lidt svært at forstå i forhold til min meget begrænsede viden.

Jeg har skrevet sådan her:
SELECT DISTINCT pibrc, pipol, ppbte,
Case PPBTE
When 2 Then PPBTE * PPPRM
When 4 Then PPBTE * PPPRM
When 1 Then PPBTE * PPPRM
Else 0 End
FROM PRDDTALB/PONBPOBP WHERE PPFOF = 9
AND PSSTA = 1 AND B2KOD  = 0     
UNION SELECT


?
Avatar billede arne_v Ekspert
23. august 2010 - 11:01 #11
Den sidste SELECT skal have:
- konstante strenge og SUM i felt listen
- samme WHERE betingelser som resten
Avatar billede Hamder83 Praktikant
23. august 2010 - 11:14 #12
Det er lige før den køber den her:
SELECT DISTINCT pibrc, pipol, ppbte,
Case PPBTE
When 2 Then PPBTE * PPPRM
When 4 Then PPBTE * PPPRM
When 1 Then PPBTE * PPPRM
Else 0 End

FROM PRDDTALB/PONBPOBP WHERE PPFOF = 9 AND PSSTA = 1
AND B2KOD = 0
UNION SELECT 'ialt', sum(PPBTE) FROM PRDDTALB/PONBPOBP
HAVING PPFOF = 9 AND PSSTA = 1 AND B2KOD = 0
                                                                : Column PPFOF or expression in HAVING clause not valid.  ?
Avatar billede arne_v Ekspert
23. august 2010 - 11:19 #13
Skal den HAVING ikke vaere WHERE?
Avatar billede arne_v Ekspert
23. august 2010 - 11:19 #14
Og antallet af kolonner skal passe.
Avatar billede Hamder83 Praktikant
23. august 2010 - 13:32 #15
Du skal nok få pointene det er ikke din skyld at jeg er lidt tungnem.

  SELECT DISTINCT pibrc, pipol, ppbte,               
Case PPBTE                                         
When 2 Then PPBTE * PPPRM                         
When 4 Then PPBTE * PPPRM                         
When 1 Then PPBTE * PPPRM                         
Else TOTAL End                                     
FROM PRDDTALB/PONBPOBP WHERE PPFOF = 9 AND PSSTA = 1
AND B2KOD = 0                                     
UNION SELECT sum(TOTAL) FROM PRDDTALB/PONBPOBP     
WHERE PPFOF = 9 AND PSSTA = 1 AND B2KOD = 0   


Men hvis der IKKE er et sum felt i databasen, så kan jeg ikke gøre det eller?
Avatar billede arne_v Ekspert
23. august 2010 - 13:46 #16
Du skal bruge SUM paa det felt som du vil summere.
Avatar billede Hamder83 Praktikant
23. august 2010 - 13:48 #17
Arne

Kan jeg bede dig prøve at skrive præcis det du gerne vil have jeg gør, fordi jeg har sku lidt svært ved at forstå det?
Avatar billede arne_v Ekspert
23. august 2010 - 13:54 #18
Nej.

Ikke p.g.a. manglende vilje, men jeg aner ikke hvad dine kolonner er og hvad du vil summere.
Avatar billede Hamder83 Praktikant
23. august 2010 - 14:05 #19
OK

Men i mine tabeller har jeg ikke noget der heder ialt, eller sådan.

Så forstår ikke hvorfor man skriver det?
SELECT navn,beloeb FROM tabel
UNION
SELECT 'ialt',SUM(beloeb) FROM tabel

Jeg har 2 ting jeg gerne vil have den regner sammen
PPBTE (termin) og PPPRM (PRÆMIE)
grunden til jeg gerne vil have sql'en til det er fordi vi ikke laver en app vi kunne bede om det.
Vi skal bare lave noget statestik.
Avatar billede arne_v Ekspert
23. august 2010 - 15:13 #20
Du skal have det inden i SUM som skal summeres.

SELECT DISTINCT pibrc, pipol, ppbte,             
Case PPBTE                                       
When 2 Then PPBTE * PPPRM                       
When 4 Then PPBTE * PPPRM                       
When 1 Then PPBTE * PPPRM                       
Else TOTAL End                                   
FROM PRDDTALB/PONBPOBP WHERE PPFOF = 9 AND PSSTA = 1
AND B2KOD = 0                                   
UNION
SELECT sum(ppbte) FROM PRDDTALB/PONBPOBP   
WHERE PPFOF = 9 AND PSSTA = 1 AND B2KOD = 0 

eller

SELECT DISTINCT pibrc, pipol, ppbte,             
Case PPBTE                                       
When 2 Then PPBTE * PPPRM                       
When 4 Then PPBTE * PPPRM                       
When 1 Then PPBTE * PPPRM                       
Else TOTAL End                                   
FROM PRDDTALB/PONBPOBP WHERE PPFOF = 9 AND PSSTA = 1
AND B2KOD = 0                                   
UNION
SELECT sum(ppprm) FROM PRDDTALB/PONBPOBP   
WHERE PPFOF = 9 AND PSSTA = 1 AND B2KOD = 0 

eller

SELECT DISTINCT pibrc, pipol, ppbte,             
Case PPBTE                                       
When 2 Then PPBTE * PPPRM                       
When 4 Then PPBTE * PPPRM                       
When 1 Then PPBTE * PPPRM                       
Else TOTAL End                                   
FROM PRDDTALB/PONBPOBP WHERE PPFOF = 9 AND PSSTA = 1
AND B2KOD = 0                                   
UNION
SELECT sum(Case PPBTE                                       
When 2 Then PPBTE * PPPRM                       
When 4 Then PPBTE * PPPRM                       
When 1 Then PPBTE * PPPRM                       
Else TOTAL End) FROM PRDDTALB/PONBPOBP   
WHERE PPFOF = 9 AND PSSTA = 1 AND B2KOD = 0
Avatar billede Hamder83 Praktikant
23. august 2010 - 15:47 #21
Hej Arne

Tak for forsøget.
Den skriver godt nok:
Kolonnen TOTAL er ikke i de angivne tabeller.

Men det kan vel bare ikke lade sig gøre så?
Avatar billede arne_v Ekspert
29. august 2010 - 00:15 #22
Hvis der ikke er en total kolonne i tabellen kan du naturligvis ikke bruge en sådan.
Avatar billede Hamder83 Praktikant
11. september 2010 - 14:45 #23
Hej Arne

Gider du ikke lave et svar så du kan få pointene.
Avatar billede arne_v Ekspert
11. september 2010 - 15:53 #24
ok
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

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