I tried many way but didn't get expected result. How can I get expected result.
You can download the dbtable structure from here :-
SELECT
IF(o.source_id = 1, 'online',0) TYPE,
MONTH(date_created) AS monthvalue
,SUM(total_price) AS totalSale
FROM orders o
WHERE o.source_id = 1 AND date_created BETWEEN(CURDATE() - INTERVAL 1 MONTH)
AND CURDATE()
GROUP BY monthvalue
UNION ALL
SELECT
IF(o.source_id = 2, 'visit',0) TYPE,
MONTH(date_created) AS monthvalue
,SUM(total_price) AS totalSale
FROM orders o
WHERE o.source_id =2 AND date_created BETWEEN(CURDATE() - INTERVAL 1 MONTH)
AND CURDATE()
GROUP BY monthvalue
UNION ALL
SELECT
IF(o.source_id = 3, 'phone',0) TYPE,
MONTH(date_created) AS monthvalue
,SUM(total_price) AS totalSale
FROM orders o
WHERE o.source_id = 3 AND date_created BETWEEN(CURDATE() - INTERVAL 1 MONTH)
AND CURDATE()
GROUP BY monthvalue
Got Result :-
TYPE monthvalue totalSale
online 6 38300
visit 6 16800
phone 5 500
phone 6 7150
Expected Result :
Type May June
online 0 38300
Visit 0 16800
Phone 500 7150