Du kan sammanställa med en CASE uttryck, som bildar en grupp med id om manager_id vara noll, annars använder du manager_id . Resten av logiken liknar det du redan har.
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;
En sidoanteckning:Jag använde en funktion i GROUP BY klausul, som inte är ANSI-kompatibel och därför kanske inte körs överallt. För att åtgärda detta kan vi först undersöka din tabell för att generera effektiva chefsgrupper. Använd sedan mitt svar ovan mot detta mellanresultat.
