Frage zu SQL

Hier verraten JVerein-Benutzer ihre Tricks und Tips zur JVerein

Moderator: heiner

Antworten
thomas-w
Beiträge: 88
Registriert: Freitag 17. November 2017, 15:08
Verein: VFFOW
Mitglieder: 800
JVerein-Version: 2.8.16
Betriebssystem: Win 10
Wohnort: Hamburg

Frage zu SQL

Beitrag von thomas-w »

Hallo,

ich versuche aktuell eine Abfrage der Buchungen für eine Summenausgabe pro Monat zu erstellen. Da für mich das Base-SQL neu ist (programmiere normalerweise in einer anderen Sprache - ABAP) und ich nach einigem probieren und suchen keine Lösung gefunden habe, hoffe ich hier auf einen Tipp.

Ich möchte dass bei Aufruf der Abfrage Parameter für Buchungsdatum-Von und Buchungsdatum-Bis abgefragt werden. Aktuell endet der SQL wie folgt:
AND "BUCHUNG"."DATUM" BETWEEN {d '2018-01-01' } AND {d '2018-02-28' }

Wenn ich die fest hinterlegten Datümer ersetze, bekomme ich zwar ein PopUp für die Variablen, aber bei der Selektion kommt es zu einen Fehler
AND "BUCHUNG"."DATUM" BETWEEN :BuchungsdatumVon AND :BuchungsdatumBis

Wie ist die korrekte Syntax?

Danke und Gruß.
Thomas
thomas-w
Beiträge: 88
Registriert: Freitag 17. November 2017, 15:08
Verein: VFFOW
Mitglieder: 800
JVerein-Version: 2.8.16
Betriebssystem: Win 10
Wohnort: Hamburg

Re: Frage zu SQL

Beitrag von thomas-w »

Habe noch eine ergänzende Frage:
Ich möchte die Periode aus dem Buchungsdatum in einer Zusatzspalte in der Abfrage haben z. B. als Wert 2018.01
Dazu habe ich den Select um nachfolgendes ergänzt:
year("BUCHUNG"."DATUM")||'.'||month("BUCHUNG"."DATUM") AS "Periode",

Jetzt bekomme ich die Spalte "Periode" mit dem Wert "2018.1". Wie gebe ich hier ein Format mit, damit der Monat immer zweistellig ggf, mit führender Null aufgefüllt wird? Also 2018.01
Danzelot
Beiträge: 294
Registriert: Freitag 30. Juli 2010, 21:29
Verein: Musica Margaretha Reutti e.V.
Mitglieder: 51
JVerein-Version: 2.8.17
Betriebssystem: Windows
Wohnort: Ulm

Re: Frage zu SQL

Beitrag von Danzelot »

Hallo Thomas,

mit dieser Abfrage bekommst Du die Monate 2-stellig:

Code: Alles auswählen

select distinct year("BUCHUNG"."DATUM")||'.'||substring('0'||month("BUCHUNG"."DATUM"),-2) AS "Periode"
Gruß
Danzelot
Antworten