71 Aufrufe

Liebe Tomedos,

ich wollte eine SQL Bedigung in eine Aktionsauslösung einbauen um zu prüfen, ob der Patient > 70 Jahre ist:

SELECT geburtsdatum,
    
	date_part('year',age(geburtsdatum)) as age

FROM patient 

WHERE age>70

es funktioniert aber irgendwie nicht? Aktionsauslöser ist "Karteiöffnen"

ERROR:  column "age" does not exist

Ideen?

Gefragt von (990 Punkte) | 71 Aufrufe
0 Punkte

1 Antwort

In folgendem Therad hatte ich zwei funktionstüchtige (getestete) Beispiele angegeben.

https://forum.tomedo.de/index.php/16486/bugreport-aktionsketten-ausloser-privatrechnung-erzeugt-sql-error

Es fehlt also in Ihrem Beipsiel noch der konkrete Bezug zu dem Patienten, von dem Sie das Geburtsdatum haben wollen. Desweiteren ist es in Postgres-SQL nicht möglich, eine selbst erzeugte Spalte per 'where' zu überprüfen. Sie haben da zwei Möglichkeiten:

1. Eine Zwischentabelle anzulegen: select * from (select .. age from ...) A where A.age > 70.

2. Die Altersüberprüfung direkt im where-Teil zu machen: select .. from patient where date_part('year', age(geburtsdatum)) >70

Da es bei zweiter Abfrage unklar ist, wie performant das ganze ist , würd eich zu erster Variante tendieren. Für Ihr Beispiel also:

SELECT * from (SELECT date_part('year', age(geburtsdatum)) as age from patient where ident = $[patientident]$) A where A.age > 70

(ungetestet).
Beantwortet von (32.3k Punkte)
0 Punkte
4,896 Beiträge
8,656 Antworten
11,010 Kommentare
1,958 Nutzer