我正在将旧的基于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
,但这只是我的代码中运行着一个更大的数学系统的一个小例子,数十个更复杂的数学部分相互叠加。我宁愿尽可能干净地做而不重复自己。