SQL Parametereingabe und damit rechnen
Verfasst: Mo, 13.03.2017 18:05
Hallo,
bei der Erstellung meiner Mitgliederdatenbank bin ich auf ein Problem gestoßen, für welches ich (noch) keine Lösung gefunden habe. Es geht um Berechnungen in einer SQL-Abfrage samt Parametereingabe.
Konkret: die Mitglieder sollen zu runden Geburtstagen oder bei runden Jahrestagen ihrer Mitgliedschaft ein entsprechendes Schreiben bekommen. Dazu habe ich die Felder "Geburtstag" und "Eintritt" mit denen ich arbeiten kann. Mittels einer Parameterabfrage hole ich mir das Jahr für welches die Berechnung gelten soll (damit man für ein beliebiges Jahr im Voraus sehen kann wer denn aller zu beglückwünschen ist).
Die einzelnen Abfragen funktionieren schon ganz gut so nach dem Muster:
Was ich noch nicht geschafft habe ist eine Abfrage in welcher beide Anlässe vorkommen können - weil ich dafür den abgefragten Parameter "Jahr" quasi zwischenspeichern müsste und genau das weiß ich nicht wie und ob es überhaupt geht.
Folgendes geht jedenfalls nicht:...liefert (nach der Parametereingabe)...
Wer kann mir hier helfen?
Danke!
bei der Erstellung meiner Mitgliederdatenbank bin ich auf ein Problem gestoßen, für welches ich (noch) keine Lösung gefunden habe. Es geht um Berechnungen in einer SQL-Abfrage samt Parametereingabe.
Konkret: die Mitglieder sollen zu runden Geburtstagen oder bei runden Jahrestagen ihrer Mitgliedschaft ein entsprechendes Schreiben bekommen. Dazu habe ich die Felder "Geburtstag" und "Eintritt" mit denen ich arbeiten kann. Mittels einer Parameterabfrage hole ich mir das Jahr für welches die Berechnung gelten soll (damit man für ein beliebiges Jahr im Voraus sehen kann wer denn aller zu beglückwünschen ist).
Die einzelnen Abfragen funktionieren schon ganz gut so nach dem Muster:
Code: Alles auswählen
SELECT "Vorname", "Name", "Geburtstag", :Jahr - YEAR( "Mitglieder-Adressen"."Geburtstag" ) "Jubilaeum" FROM "Mitglieder-Adressen" WHERE MOD( "Jubilaeum", 5 ) = 0 AND "Jubilaeum" >= 70
Folgendes geht jedenfalls nicht:
Code: Alles auswählen
SELECT "Vorname", "Name", "Geburtstag", :Jahr as "Zeitpunkt", "Geburtstag" FROM "Mitglieder-Adressen" WHERE MOD( "Zeitpunkt" - "Geburtstag", 5 ) = 0
Code: Alles auswählen
Die Dateninhalte konnten nicht geladen werden.
SQL-Status: 37000 Fehler-Code: -16
Wrong data type: java.lang.IllegalArgumentException
Danke!