[MySQL] SELECT 2 SUMS met verschillende criteria

Pagina: 1
Acties:
  • 117 views sinds 30-01-2008
  • Reageer

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Op een factuur komen artikelen voor met verschillende btw-percentages (0%, 6% en 19%). Nu wil ik dat onder aan de factuur subtotalen komen per BTW-tarief.

Voorbeeld:

Tabel Factuurregels
Omschrijving - Aantal - Prijs - BTW
Artikel 1 - 5 - 2,00 - 19
Artikel 2 - 5 - 4,00 - 19
Artikel 3 - 3 - 6,00 - 6

Subtotalen:
BTW 6%: 18,00 (3*6,00)
BTW 19%: 30,00 (5*2,00 + 5*4,00)

Deze SQL-Query pakt MySQL echter niet:
SQL:
1
2
SELECT (SELECT SUM(Prijs) FROM FactuurRegels WHERE BTW = 6), 
SUM(Prijs) FROM FactuurRegels WHERE BTW = 19


Hoe krijg ik dit voor elkaar?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Waarom doe je het gewoon niet met 2 aparte queries?

https://fgheysels.github.io/


Verwijderd

in SQL Server zou ik het zo doen:

code:
1
2
3
4
5
select 
  sum ( case when btw=6  then bedrag else 0 end )
 ,sum ( case when btw=18 then bedrag else 0 end )
from
  table

  • Danfoss
  • Registratie: Mei 2000
  • Nu online

Danfoss

Deze ruimte is te koop..

Zoiets?
code:
1
2
3
4
5
Select Totaal_6%
, Totaal_19%
From
( Select sum(prijs) as totaal_6% from factuurregels where btw = 6)
, (Select sum(prijs) as totaal_19% from factuurregels where btw = 19%)


Of zoiets:
code:
1
2
3
Select sum(case when BTW = 6 then prijs) as totaal_6%
, sum(case when BTW = 19 then prijs) as totaal_19%
from factuurregels

Sys Specs


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Verwijderd schreef op 15 januari 2004 @ 16:19:
in SQL Server zou ik het zo doen:

code:
1
2
3
4
5
select 
  sum ( case when btw=6  then bedrag else 0 end )
 ,sum ( case when btw=18 then bedrag else 0 end )
from
  table
Werkt ook in MySQL! Tnx!

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Nu werk ik in de tabel Factuurregels met codes voor BTW i.p.v. percentages. Er is dan nog een tabel BTW:

BTW
BTWID - BTWPerc
0 - 0.00
1 - 6.00
2 - 19.00

Krijg de berekening nu niet meer voor elkaar met SQL.... ook niet met een LEFT JOIN.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Als je dit 'netjes' wilt doen, moet je niet proberen de verschillende resultaten in een record terug te krijgen.

Door een sum, een join en een group by te gebruikien kun je op een heel nette manier een tabel krijgen met als kolommen btwpercentage, btwcode en totaal op de factuur. In jou geval zijn er drie codes, dus afhankelijk van wat er in de factuur zit krijg je 0 tot 3 rijen terug.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 17-11-2025

robjanssen

Software Developer

Ik zou het zo doen met SQL Server, maar ik weet niet of dat met MySOL ook zo werkt.

code:
1
2
3
4
Aantal - Prijs - BTW
SELECT BTW, SUM(Aantal * Prijs)
FROM FactuurRegels
GROUP BY BTW
Pagina: 1