Je suppose que vous ne voulez pas vraiment GROUP BY
un_produit.
La réponse à : "Existe-t-il un moyen de GROUP BY
un alias de colonne tel que some_product dans ce cas, ou dois-je mettre ceci dans une sous-requête et grouper dessus ?" est : Vous ne pouvez pas GROUP BY
un alias de colonne.
Le SELECT
la clause, où les alias de colonne sont affectés, n'est pas traitée avant le GROUP BY
clause. Une vue en ligne ou une expression de table commune (CTE) peut être utilisée pour rendre les résultats disponibles pour le regroupement.
Vue intégrée :
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 ...