Toon posts:

[SQL] group by, maar data bestaat niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een overzicht te krijgen van transacties, gebasseerd op een table die er zo uit ziet:
code:
1
2
3
4
klantid  bedrag       datum
1              20         1/1/2003
1              25         21/2/2003
2              100        23/3/2003

nu wil ik eigenlijk dit terug krijgen:
code:
1
2
3
klant:        januari  februari   maart  etc....
1                20       25        0     
2                 0        0       100

Ik kan wel een group by datepart(M, datum) doen, maar nu krijg ik uiteraard geen 0 terug als er geen verkoop was (record bestaat niet)

Iemand een idee?

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Wat voor SQL statement heb je precies en welke foutmelding krijg je

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

SQL:
1
where datum > '0000-00-00' 

:?

Stop uploading passwords to Github!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
SQL is er om data op te halen, te inserten en whatever....
SQL is niet gemaakt om die opgehaalde data ook in een tabelletje te gaan gieten.
Kortom: haal de data op met SQL, verzorg de opmaak met iets anders.

https://fgheysels.github.io/


Verwijderd

Topicstarter
helaas jullie begrijpen me verkeerd ;)

mijn sql statement is nu:
code:
1
2
SELECT klant, sum(bedrag) as bedrag, datepart(m,datum) as maand 
FROM tablex where datum BETWEEN '31/12/2002' AND '1/1/2004' GROUP BY klant, datepart(M, datum)


(de eigenlijke tabel is iets ingewikkelder, dus hierboven kan een foutje zitten)

wat ik terug krijg is dit
code:
1
2
3
4
klant bedrag    maand
1          20       1
1          25       2
2         100       3


en wat ik wil terug krijgen is dit:

code:
1
2
3
4
5
6
7
8
9
klant bedrag    maand
1          20         1
1          25         2
1           0         3
1           0         4
1           0         5
1           0         6
1           0         7
etc... tot en met 12, per klant

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
Kijk eens naar OUTER joins.
klik

[ Voor 61% gewijzigd door whoami op 26-11-2003 16:47 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
hmm... ik kom er daar niet mee, ten eerste komt er geen join voor, de data komt uit 1 tabel. maar zelfs als ik een tijdelijke tabel aanmaak met de maanden erin, wordt de data niet goed aangevuld, ik krijg er geen records bij.

nu las ik net over selects gebasseerd op selects, zoiets:

code:
1
2
3
4
5
6
7
8
9
10
SELECT ISNULL(bedragmnd1, 0) AS bedragmnd1, 
    ISNULL(bedragmnd2, 0) AS bedragmnd2
FROM (SELECT SUM(bedrag) AS bedragmnd1
      FROM tabel
      WHERE log_maand = 1) bedragmnd1,
        (SELECT SUM(bedrag) AS bedragmnd2
      FROM logtable
      WHERE log_maand = 2) bedragmnd2

etc..



nu krijg ik de correcte dat, alleen houd bovenstaande code geen rekening met mijn klant id, ik krijg de totale opsomming van alle verkopen in de maand

ziet iemand hoe ik kan veroorzaken dat hij ze per klant, per maand telt?

of ben ik weer erg dom bezig :z

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
Je zult zowiezo een tabel met de maanden moeten hebben lijkt me, die je dan joined (outer) met jouw tabel.

code:
1
2
3
4
select klant, isnull(sum(bedrag), 0) datepart(m, datum) as maand
from tabel
right join maanden_tabel on maanden_tabel.maand = tabel.maand
group by klant, maand


Misschien is het handig als je een extra column toevoegt in je tabel waarin je de maand invult (in een trigger, of een computed (virtual) column), dit om performance-redenen (je kan er een index op zetten (behalve als het een computed column is dacht ik) en je hoeft geen functie te gebruiken in je where), en omdat ik niet zeker weet of het wel toegestaan is om een functie in je join-clausule te gebruiken.

[ Voor 7% gewijzigd door whoami op 26-11-2003 20:00 ]

https://fgheysels.github.io/

Pagina: 1