MySQL: Returning multiple columns from an in-line subquery MySQL: Returning multiple columns from an in-line subquery sql sql

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


You can also do something like:

SELECT     a.`y`,    ( SELECT @c:=NULL ) AS `temp`,    ( SELECT @d:=NULL ) AS `temp`,    ( SELECT           CONCAT(@c:=b.`c`, @d:=b.`d`)       FROM `b`      ORDER BY b.`uid`       LIMIT 1 ) AS `temp`,    @c as c,    @d as d FROM `a`


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