SQL totaal som query

Status
Niet open voor verdere reacties.

barendrecht82

Gebruiker
Lid geworden
24 mrt 2013
Berichten
230
Hoi,

Ik heb de volgende simpele sql:

Code:
SELECT        reknr, SUM(bdr_val) AS Expr1, datum AS Expr2
FROM            dbo.gbkmut
GROUP BY reknr, datum
HAVING        (reknr LIKE '%1010020%') AND (datum <= CONVERT(DATETIME, '2020-12-31 00:00:00', 102))

Result:

Reknr Expr1 Expr2
10100200 -41,76 2009-02-28 00:00:00.000
10100200 -50,01 2007-07-08 00:00:00.000
10100200 -100 2010-10-25 00:00:00.000
10100200 -8,29 2016-05-04 00:00:00.000
10100200 121,92 2008-08-29 00:00:00.000
10100200 0 2006-06-05 00:00:00.000
10100200 1475 2017-06-29 00:00:00.000
10100200 -10 2015-10-08 00:00:00.000
10100200 -3,5 2006-05-16 00:00:00.000
10100200 -94,77 2013-01-15 00:00:00.000


Ik zou de query zo willen hebben dat hij alle mutaties optelt en saldo van 31-12-2020 opgeeft.

Reknr Expr1 Expr2
10100200 -XXX 2020-12-31
 
Om te beginnen: de having clause gebruik je alleen als je op het resultaat van een groeperingsfunctie zoals sum(XXXX) wil filtreren. Dan wordt er niet naar de individuele records gekregen, maar eerst de groepering gedaan en dan op het resultaat van de functie gefilterd. Zie ook mijn cursus T-SQL die hier ergens bij 'ANDERE software' gepost is.

In jou voorbeeld staat het criterium op individuele records: dus gebruik hier de WHERE

en de datum hoef je alleen te converteren als het veld Datum een tekstveld is en niet een DATUM/Tijd veld. Als het veld een datum veld is:

Code:
SELECT        reknr, SUM(bdr_val) AS Expr1, datum 
FROM            dbo.gbkmut
WHERE reknr LIKE '%1010020%' AND datum <=  '2020-12-31'
GROUP BY reknr, datum

Dat zou de som van alle waarden in het veld bdr_val voor alle rekeningen die de tekst 1010020 bevatten tot 31-12-2020 moeten geven. Als je de records van 31-12 erbij wil moet je <= gebruiken
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan