Ik vermoed dat je niet echt wilt GROUP BY
een_product.
Het antwoord op: "Is er een manier om GROUP BY
een kolomalias zoals some_product in dit geval, of moet ik dit in een subquery en daarop groeperen?" is: U kunt niet GROUP BY
een kolomalias.
De SELECT
clausule, waar kolomaliassen worden toegewezen, wordt pas verwerkt na de GROUP BY
clausule. Een inline view of Common Table Expression (CTE) kan worden gebruikt om de resultaten beschikbaar te maken voor groepering.
Inline-weergave:
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 ...