古いMS-AccessベースのシステムをPostgreSQLに変換しています。Accessでは、SELECTで作成されたフィールドは、次のように、後のフィールドの方程式の一部として使用できます。
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
PostgreSQLでこれを行うと、Postgresはエラーをスローします。
エラー:列「percent_water」は存在しません。
サブ選択から選択することで、これを回避する方法は次のとおりです。
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;
複雑なネストを回避するための最初のコードブロックのようなショートカットはありますか?私は単に言うこともできます100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
が、これは私のコードで行われているはるかに大きな数学のシステムのほんの小さな例であり、数十のより複雑な数学のビットが互いに積み重ねられています。私は自分自身を繰り返すことなく、できるだけきれいにしたいと思います。