PDA

View Full Version : SQL - Abfrag mit Tagesdatum bzw. für ein ganzes Monat



muadeep
03-12-09, 07:08
Hallo *all

Hab wieder mal eine Frage an die SQL-Spezialisten hier im Forum

Ich habe eine SQL-Abfrage, welche mir aus einer Datenbank den aktuellen Tagesumsatz berechnet/ermittelt.


select sum(FKSum) as Tagesumsatz
from MyLib/MyFile
where FKaaa > 0 and (not (int(FKaaa/100000) = 86 or
int(FKaaa/100000)=75)) and FK1=501
group by FKdd
having FKddd='1' concat substr(replace(char(current date, iso),'-' , '') , 3, 6)Ich brauche jetzt aber auch noch den Umsatz für den laufenden Monat.

Wie kann/muß ich die SQL-Abfrage umbauen um den Umsatz des lfd. Monat's zu erhalten?

Fuerchau
03-12-09, 09:11
Dazu musst du das Current Date berechnen:

Von Datum:
current date - (day(current date) + 1) days

Bis Datum:
current date - (day(current date) + 1) days + 1 months - 1 days

andreaspr@aon.at
03-12-09, 09:21
Wenn du das als Datum den letzten Tag des Monats brauchst, gibt es (zumindest ab V5R4) auch die Funktion LAST_DAY:

last_day(current date)
Ergebnis: 31.12.2009

muadeep
03-12-09, 09:39
bekomm ich dann da nicht für jeden Tag eine Summe ????

=> ich bräuchte die Summe des ganzen Monats

Fuerchau
03-12-09, 10:14
Du musst die Berechnung des Datums in die Where-Bedingung aufnehmen (Having ist hier ggf. langsamer):

select sum(FKSum) as Tagesumsatz
from MyLib/MyFile
where FKaaa > 0 and (not (int(FKaaa/100000) = 86 or
int(FKaaa/100000)=75)) and FK1=501

and FKddd between Von-Datum and Bis-Datum

group by FKdd

Spateneder
03-12-09, 16:50
Wenn Du den gesamten Monat willst, brauchst Du eigentlich nur die Datums-Substrings in der Where-Klausel zu ändern:


...
and substr(FKddd, 1, 5) = '1' concat substr(replace(char(current date, iso),'-' , '') , 3, 4)
...

oder, wenn es auch ein Außenstehender lesen können soll:


...
and int(substr(FKddd, 4, 2)) = month(current date)
and int('20' concat substr(FKddd, 2, 2)) = year(current date)
...

Der Group-By nach Datum entfällt, wenn Du nur diesen einen Wert willst. Generell zu überlegen ist, wie das ganze eingesetzt wird, weil solche Abfragen mit Current Date natürlich bei Monats- und Jahreswechseln, oder wenn die Nacht zu kurz wird, gerne mal Ärger machen.