MySQL: Returning multiple columns from an in-line subquery
Move the inline SQL to be a inner join query. So you'd have something like...
SELECT DATE_FORMAT(OrderDate,'%M %Y') AS OrderMonth, COUNT(OrderID) AS TotalOrders, SUM(OrderTotal) AS TotalAmount, Z.OrderCustomerFK, Z.CustomerName, z.OrderTotal as CustomerTotal FROM Orders INNER JOIN (SELECT DATE_FORMAT(OrderDate,'%M %Y') as Mon, OrderCustomerFK, CustomerName, SUM(OrderTotal) as OrderTotal FROM Orders GROUP BY DATE_FORMAT(OrderDate,'%M %Y'), OrderCustomerFK, CustomerName ORDER BY SUM(OrderTotal) DESC LIMIT 1) Z ON Z.Mon = DATE_FORMAT(OrderDate,'%M %Y') GROUP BY DATE_FORMAT(OrderDate,'%m%y'), Z.OrderCustomerFK, Z.CustomerName ORDER BY DATE_FORMAT(OrderDate,'%y%m') DESC
Give this a shot:
SELECT CONCAT(o.order_month, ' ', o.order_year), o.total_orders, o.total_amount, x.sum_order_total, x.ordercustomerfk, x.customername FROM (SELECT MONTH(t.orderdate) AS order_month, YEAR(t.orderdate) AS order_year COUNT(t.orderid) AS total_orders, SUM(t.ordertotal) AS total_amount FROM ORDERS t GROUP BY MONTH(t.orderdate), YEAR(t.orderdate)) o JOIN (SELECT MONTH(t.orderdate) AS ordermonth, YEAR(t.orderdate) AS orderyear SUM(t.ordertotal) 'sum_order_total', t.ordercustomerfk, c.customername FROM ORDERS t JOIN CUSTOMERS c ON c.customerid = o.ordercustomerfk GROUP BY t.ordercustomerfk, MONTH(t.orderdate), YEAR(t.orderdate)) x ON x.order_month = o.order_month AND x.order_year = o.order_yearORDER BY o.order_year DESC, o.order_month DESC