Abfrage auf zurückliegenden Monat/Woche

MarcoVreden

Benutzer
Beiträge
11
Ich hoffe ich darf hier auch gleich eine zweite Frage los werden, hier wird so schnell und gut geantwortet :)

Ich würde gerne automatisch immer auf den zurückliegenden Monat abfragen. Also so, dass er am 01.07.2018 den Monat Juni 2018 auswertet und am 01.08.2018 automatisch den Juli 2018. Geht das auch für zurückliegende Kalenderwochen?

Geht sowas in einer SQL-Abfrage?

select arnr,
arbe,
count(ARNR) Positionen,
sum(menge) Menge,
sum(ekwert) EK,
sum(vkwert) VK,
sum(vkwert-ekwert) Rohertrag
from tabelle
where reda between '01.06.2018' and '30.06.2018'
and arnr in ('FRACHT','KRAN','GURT','PLAN')
and sart = 'V'
group by (arnr, arbe)
 
Werbung:
Dazu bieten Datenbanken i.d.R. Funktionen, mit denen man ein Datum berechnen kann. Im Beispiel erzeuge ich eine Tabelle aller Tage des jahres und dann daraus alle Einträge der Vorwoche:

Code:
test=# create table datum (d date);
CREATE TABLE
test=*# insert into datum select '2018-01-01'::date + '1day'::interval * s from generate_series(0,365) s;
INSERT 0 366
test=*# select * from datum where d between current_date - (extract(dow from current_date)::int) - 6  and current_date - (extract(dow from current_date)::int) ;
     d     
------------
 2018-07-09
 2018-07-10
 2018-07-11
 2018-07-12
 2018-07-13
 2018-07-14
 2018-07-15
(7 Zeilen)

test=*#

das anzupassen überlasse ich Dir zur Übung.
 
Wahnsinn, wie gut du dich mit SQL auskennst... das willl ich auch können :)

Meine Abfrage nach deiner Vorlage funktioniert leider noch nicht ;-(
select reda, arnr, vkwert from tabelle where reda = (current_date - (extract(dow from current_date)::int) -6)
Fehler: ORA-00907: Rechte Klammer fehlt
Was habe ich falsch gemacht?

Danach habe ich versucht die Tabelle nach deiner Vorlage zu erstellen und hiermit zu befüllen:
test=*# insert into datum select '2018-01-01'::date + '1day'::interval * s from generate_series(0,365) s;
hier meckert er: ORA-00923: Schlüsselwort FROM nicht an erwarteter Stelle gefunden --- und bleibt bei :: stehen?

Wie du siehst bin ich noch blutiger Anfänger. Hoffentlich werde ich dir hier nicht zu lästig :)
 
Werbung:
ja, ich verwende kein Oracle, sondern PostgreSQL. Da gibt es Unterschiede in der Syntax, in den verfügbaren Funktionen und so weiter.
 
Zurück
Oben