小编wiz*_*g64的帖子

在同一个 SELECT 列表中引用列别名

我正在将旧的基于 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;
Run Code Online (Sandbox Code Playgroud)

当我在 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;
Run Code Online (Sandbox Code Playgroud)

有没有像第一个代码块那样的快捷方式来绕过复杂的嵌套?我也可以说100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100,但这只是我的代码中进行的更大的数学系统中的一个小例子,其中有数十个更复杂的数学位相互叠加。我宁愿尽可能干净地做而不重复自己。

postgresql select

43
推荐指数
2
解决办法
5万
查看次数

标签 统计

postgresql ×1

select ×1