Dugaan saya adalah Anda tidak benar-benar ingin GROUP BY
beberapa_produk.
Jawaban untuk: "Apakah ada cara untuk GROUP BY
alias kolom seperti some_product dalam kasus ini, atau apakah saya perlu memasukkan ini ke dalam subkueri dan grup di atasnya?" adalah: Anda tidak dapat GROUP BY
alias kolom.
SELECT
klausa, di mana alias kolom ditetapkan, tidak diproses sampai setelah GROUP BY
ayat. Tampilan sebaris atau ekspresi tabel umum (CTE) dapat digunakan agar hasil tersedia untuk pengelompokan.
Tampilan sebaris:
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 ...