Я создаю отчет о заказе магазинов. SQL-запрос работает как положено.
Он рассчитывает количество заказов из каждого магазина, общую стоимость заказов и нашу комиссию и оставшиеся поля.
Если клиент оплатил наличными при доставке, то в нем отображается поле OutstandingComm
Если клиент оплатил картой через Интернет, то в нем отображается outstanding_shop
поле
SELECT T.ShopID, T.company, O.order_id, count(*) as NumOfOrders,
sum(O.shop_remaining) as ShopEarnings,
sum(O.comm_grandtotal) as OurComm,
SUM(CASE WHEN payment_method = 'PayCash' AND status = 1 THEN O.comm_grandtotal ELSE 0 END) as OutstandingComm,
SUM(CASE WHEN payment_method = 'PayCard' AND status = 1 THEN O.shop_remaining ELSE 0 END) as outstanding_shop
FROM Shops as T
JOIN orders O ON O.ShopID = T.ShopID
Group by ShopID
Можно ли улучшить этот SQL-запрос или есть альтернативный лучший способ?