【发布时间】:2011-05-12 08:36:42
【问题描述】:
例子:
SELECT
(SELECT SUM(...) FROM ...) as turnover,
(SELECT SUM(...) FROM ...) as cost,
turnover - cost as profit
确定这是无效的(至少在 Postgres 中),但是如何在不重写子查询两次的情况下在查询中实现相同的效果?
【问题讨论】:
-
取决于详细信息,例如所涉及的列和表。
-
@OMG Ponis:喜欢吗?没有通用的方法吗?
-
我同意@OMG。也就是说,如果您可以编写 one 子查询,将
turnover和cost作为列返回,则围绕该子查询的查询可以执行turnover - cost。有关更多详细信息,我们需要有关您的架构的一些详细信息。 -
还可以考虑使用“通用表表达式”,也就是 CTE。见stackoverflow.com/questions/2686919/… 和postgresql.org/docs/8.4/static/queries-with.html
-
已编辑标题:此问题不关注重用子查询(表),而是关注单个列,与 stackoverflow.com/q/2686919/648265 不同。
标签: sql postgresql subquery