Ich konvertiere ein altes MS-Access-basiertes System nach PostgreSQL. In Access können Felder, die in SELECTs erstellt wurden, als Teile von Gleichungen für spätere Felder verwendet werden.
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Wenn ich das in PostgreSQL mache, gibt Postgres einen Fehler aus:
FEHLER: Spalte "Prozent_Wasser" existiert nicht.
Hier ist, wie ich es umgehen kann, indem ich aus einer Unterauswahl auswähle:
SELECT
s1.id,
s1.percent_water,
100 * s1.percent_water AS percent_water_100
FROM (
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water
FROM samples
) s1;
Gibt es eine Verknüpfung wie im ersten Codeblock, um komplizierte Verschachtelungen zu umgehen? Ich könnte es auch so sagen 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, aber dies ist nur ein kleines Beispiel für ein viel größeres mathematisches System in meinem Code, bei dem Dutzende komplexerer mathematischer Teile übereinander gestapelt sind. Ich würde es vorziehen, so sauber wie möglich zu arbeiten, ohne mich zu wiederholen.