Es geht schrittweise:
1. Abfrage für das Vorjahr
01_RECHNUNGEN
Code: Alles auswählen
SELECT "ID", "Datum", YEAR( "Datum" ) - 1 AS "LAST_YEAR" FROM "Rechnung"
2. Abfrage für die höchste Rechnungsnummer je Jahr
02_MAX_YEAR_ID
Code: Alles auswählen
SELECT MAX( "ID" ) "MAX_ID", YEAR( "Datum" ) "MAX_YEAR" FROM "Rechnung" GROUP BY YEAR( "Datum" )
3. Erzeugung der Rechnungsnummern
03_RECHNUNGSNUMMERN
Code: Alles auswählen
SELECT
"ID",
'RG-' || REPEAT( 0, 4 - LENGTH( "ID" - IFNULL( "MAX_ID", 0 ) ) ) || "ID" - IFNULL( "MAX_ID", 0 ) || '/' || YEAR( "Datum" ) AS "RG.Nr."
FROM
"01_RECHNUNGEN"
LEFT OUTER JOIN
"02_MAX_YEAR_ID"
ON
"LAST_YEAR" = "MAX_YEAR"
4. Beschreibbare Abfrage der Rechnungen mit Rechnungsnummer
04_RECHNUNGSNUMMERN_BESCHREIBBAR
Code: Alles auswählen
SELECT
"ID",
"Datum",
"KundeID",
"ZahlDatum",
"Gedruckt",
"Rechnungsbetrag",
"Rabatt%",
( SELECT "RG.Nr." FROM "03_RECHNUNGSNUMMERN" WHERE "ID" = "Rechnung"."ID" ) AS "RG.Nr"
FROM
"Rechnung"
Damit das ganze funktioniert, darf keine ID fehlen, wie in deiner DB, in der nach der 16 die 82 kommt. Das passiert wenn man bereits erzeugte Datensätze löscht, die Auto ID zählt weiter hoch.
Korrigieren kann man das über Extras/SQL... z.B. so:
wobei die 20 die nächste ID ist, und genau eins größer als die letzte ID.
Ausserdem sollte die ID bei 1 beginnen, damit die erste Rechnungsnummer auch die 0001 ist.
so werden alle IDs um eins erhöht.
Gruß R