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:
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
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:
Code: Alles auswählen
SELECT "Vorname", "Name", "Geburtstag", :Jahr as "Zeitpunkt", "Geburtstag" FROM "Mitglieder-Adressen" WHERE MOD( "Zeitpunkt" - "Geburtstag", 5 ) = 0
...liefert (nach der Parametereingabe)...
Code: Alles auswählen
Die Dateninhalte konnten nicht geladen werden.
SQL-Status: 37000 Fehler-Code: -16
Wrong data type: java.lang.IllegalArgumentException
Wer kann mir hier helfen?
Danke!