[MS Query/SQL] Aantal records wat voldoet aan een criterium

Pagina: 1
Acties:

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:07
Hoi allen,

Ik ben bezig een query op te bouwen, maar mijn SQL kennis laat me een beetje in de steek.
Ik ben (in een boekhoudsysteem, Exact, maar dat is niet zo relevant) op zoek naar het aantal debiteuren waarvan de laatste mutatie minder dan een jaar geleden is. Mijn query moet dus één cel als output geven.

De SQL waar ik tot nu toe op kom is:
code:
1
2
3
4
SELECT count(Max(Debmut.datum)) AS 'Aantal'
FROM EfW_197.dbo.Debmut Debmut
GROUP BY Debmut.debnr
HAVING (Max(Debmut.datum)>{ts '2006-04-30 00:00:00'})

Tabel is Debmut (debiteurenmutaties).
debnr is een foreign key naar een debiteurentabel (debiteurnummer). Ik heb nog geprobeert die in een join mee te laten draaien, maar 'to no avail'.

Een aantal alternatieven die ik geprobeerd heb: Select count(*); Select count(Debmut.debnr). Doet weinig. SQL tutorials geven weinig nuttigs, wel over de functies an sich, maar niet over dit soort combinaties.
Heeft iemand een idee?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je zult het inmiddels wel opgelost hebben, maar hier komen dus subquery's om de hoek kijken :)
M.a.w. je haalt eerst de debiteuren op die een mutatIerecord hebben na 30 april en vervolgens tel je ze.
code:
1
2
3
4
5
6
SELECT count(*) AS 'Aantal'
FROM 
(SELECT(debnr) 
FROM Debmut
WHERE (Max(Debmut.datum)>{ts '2006-04-30 00:00:00'})
GROUP BY Debmut.debnr);

[ Voor 4% gewijzigd door Lustucru op 07-10-2007 11:54 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:07
Klopt, dat is wat diverse websites aanduiden. Echter, de SQL implementatie van Exact (het onderhavige boekhoudpakket) lijkt erg ongelukkig te worden van subqueries. :|
Uiteindelijk maar opgelost door de hele lijst in excel te dumpen en daar het aantal records uit te lezen. :X :+ De query hoeft nooit naar productie, maar is puur voor debugging/testdoeleinden, dus dan maar op de quick'n dirty manier.