Estoy convirtiendo un viejo sistema basado en MS-Access a PostgreSQL. En Access, los campos formados en SELECT podrían usarse como partes de ecuaciones para campos posteriores, como este:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Cuando hago esto en PostgreSQL, Postgres arroja un error:
ERROR: la columna "percent_water" no existe.
Así es como puedo solucionarlo, seleccionando una sub-selección:
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;
¿Hay algún tipo de acceso directo como en el primer bloque de código para evitar la anidación complicada? También podría decir 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, pero este es solo un pequeño ejemplo de lo que es un sistema matemático mucho más grande en mi código, con docenas de fragmentos matemáticos más complejos apilados uno encima del otro. Prefiero hacerlo lo más limpio posible sin repetirme.