Avatar billede destiny Nybegynder
19. november 2003 - 23:25 Der er 5 kommentarer og
1 løsning

SUM() funktion med decimaltal

Hej

Jeg har et problem. I mit faktureringsprogram har hver linie i fakturaen følgende felter:

Antal
Rabat i procent
Pris

For at finde den totale pris for hver linie er formlen:
Antal * Pris * (100 - Rabat) / 100

Nu vil jeg lave en SQL sætning som udregner den totale pris på fakturaen. Det har jeg gjort sådan:

SELECT SUM(PriceEach * Amount * (100 - Discount) / 100) AS Total FROM InvoiceDetails GROUP BY InvoiceID

Problemet er så at når jeg udregner Antal * Pris * (100 - Rabat) / 100 får jeg ofte et decimaltal på mere end 2 decimaler og når ovenstående SQL sætning ligger linierne sammen tager den ikke højde for at hver linie skal afrundes til 2 decimaler før de ligges sammen. Altså noget i stil med:

SELECT SUM(KonverterTil2Decimaler(PriceEach * Amount * (100 - Discount) / 100)) AS Total FROM InvoiceDetails GROUP BY InvoiceID

Hvordan gør jeg det?

Tak
Avatar billede arne_v Ekspert
19. november 2003 - 23:30 #1
Kan du ikke bare flytte /100 udenfor SUM ?

SELECT SUM(PriceEach * Amount * (100 - Discount))/100 AS Total FROM InvoiceDetails GROUP BY InvoiceID
Avatar billede arne_v Ekspert
19. november 2003 - 23:32 #2
Så skal du selvfølgelig lige have afrundet til sidst.
Avatar billede arne_v Ekspert
19. november 2003 - 23:33 #3
SELECT ROUND(SUM(PriceEach * Amount * (100 - Discount))/100,2) AS Total FROM InvoiceDetails GROUP BY InvoiceID
Avatar billede arne_v Ekspert
19. november 2003 - 23:33 #4
Ikke testet - prøv selv.
Avatar billede destiny Nybegynder
19. november 2003 - 23:36 #5
arne_v -> næsten hvad jeg søgte

SELECT SUM(ROUND(PriceEach * Amount * (100 - Discount) / 100,2)) AS Total FROM InvoiceDetails GROUP BY InvoiceID

Hvis du vil have nogle point så lav lige et svar
Avatar billede arne_v Ekspert
19. november 2003 - 23:38 #6
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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