我有一个看起来像这样的专栏:
CASE
WHEN col1 > col2 THEN SUM(col3*col4)
ELSE 0
END AS some_product
我想将它放在我的 GROUP BY 子句中,但这似乎会导致问题,因为列中有一个聚合函数。有没有办法按列别名进行分组,例如some_product
在这种情况下,或者我是否需要将其放入子查询中并对其进行分组?
我猜你并不是真的想要GROUP BY
一些_产品。
The 回答:“有没有办法GROUP BY
在这种情况下是列别名,例如 some_product,还是我需要将其放入子查询中并对其进行分组?”is:你不能GROUP BY
列别名。
The SELECT
分配列别名的子句只有在GROUP BY
条款。可以使用内联视图或公用表表达式 (CTE) 使结果可用于分组。
内联视图:
select ...
from (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
from ...
group by col1, col2 ... ) T
group by some_product ...
CTE:
with T as (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
from ...
group by col1, col2 ... )
select ...
from T
group by some_product ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)