Anda dapat menggabungkan menggunakan CASE ekspresi, yang membentuk grup menggunakan id jika manager_id menjadi nol, jika tidak menggunakan manager_id . Logika lainnya mirip dengan yang sudah Anda miliki.
SELECT
CASE WHEN manager_id = 0 THEN id ELSE manager_id END AS manager_id,
MAX(CASE WHEN is_manager=1 THEN name END) AS name,
SUM(no_of_items) AS total_items,
SUM(revenue) AS total_revenue
FROM items_revenue
GROUP BY
CASE WHEN manager_id = 0 THEN id ELSE manager_id END;
Satu catatan tambahan:Saya menggunakan fungsi di GROUP BY klausa, yang tidak sesuai dengan ANSI dan karena itu mungkin tidak berjalan di mana-mana. Untuk memperbaikinya, pertama-tama kami dapat membuat subkueri tabel Anda untuk menghasilkan grup pengelola yang efektif. Kemudian, gunakan jawaban saya di atas terhadap hasil antara ini.
