Sto convertendo un vecchio sistema basato su MS-Access in PostgreSQL. In Access, i campi creati in SELECT potrebbero essere utilizzati come parti di equazioni per campi successivi, come questo:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Quando lo faccio in PostgreSQL, Postgres genera un errore:
ERRORE: la colonna "percent_water" non esiste.
Ecco come posso aggirarlo, selezionando da una sottoselezione:
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;
C'è qualche tipo di scorciatoia come nel primo blocco di codice per aggirare l'annidamento complicato? Potrei anche solo dire 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, ma questo è solo un piccolo esempio di ciò che è un sistema matematico molto più ampio nel mio codice, con dozzine di bit matematici più complessi sovrapposti l'uno sull'altro. Preferirei fare nel modo più pulito possibile senza ripetermi.