Je convertis un ancien système basé sur MS-Access en PostgreSQL. Dans Access, les champs constitués dans SELECT peuvent être utilisés comme parties d'équations pour des champs ultérieurs, comme ceci:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Quand je fais cela dans PostgreSQL, Postgres lance une erreur:
ERREUR: la colonne "percent_water" n'existe pas.
Voici comment je peux contourner ce problème en sélectionnant une sous-sélection:
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;
Existe-t-il une sorte de raccourci comme dans le premier bloc de code pour contourner l'imbrication compliquée? Je pourrais également dire 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, mais ce n'est qu'un petit exemple de ce qui est un système de mathématiques beaucoup plus vaste dans mon code, avec des dizaines de bits de mathématiques plus complexes empilés les uns sur les autres. Je préfère faire le plus proprement possible sans me répéter.