2017-05-18 93 views
1

我很麻煩,我需要你的幫助,我有兩個表的銷售和恢復。我的要求是獲得明智的報告月份,所以我在Union All查詢時使用了date_format,它的工作正常,但問題是如果月份相同,問題在於它顯示不同行銷售和恢復的結果。PHP Mysql如何在相同的行中獲得結果如果月份相同

售:

ID(unique) Party Amount Sale_Date 
1   95  1500  01-05-2017 
2   97  3500  15-05-2017 
3   95  2500  05-06-2017 
4   97  500  10-06-2017 
5   99  1000  01-07-2017 

恢復:

ID(unique) Party Amount Recovery_Date 
1   95  1000  01-06-2017 
2   97  2000  20-06-2017 
3   95  3500  10-07-2017 
4   97  900  10-07-2017 
5   99  1500  15-08-2017 

我想要得到的結果一個月明智的,所以我使用DATE_FORMAT與UNION ALL查詢。下面是我正在使用的查詢。

"SELECT SUM(amount) as sale_amount, DATE_FORMAT(Sale_Date, '%M %Y'), 
null as recovery_amount FROM 
`SALE` GROUP BY DATE_FORMAT(Sale_Date, '%M %Y') 
UNION ALL 
"SELECT null as sale_amount, DATE_FORMAT(Sale_Date, '%M %Y'), 
SUM(amount) as recovery_amount FROM 
`SALE` GROUP BY DATE_FORMAT(Sale_Date, '%M %Y') 

結果:

S.No Month  Sale Recovery Balance 
1  May-2017 5000    5000 
2  June-2017 3000    3000 
3  June-2017   3000  -3000 
4  July-2017 1000    1000 
5  July-2017   4400  -4400 
6  Aug-2017   1500  -1500 

上述結果是正確的,但我需要的結果在下面的格式,以獲得正確的平衡量

預期結果:

S.No Month  Sale Recovery Balance 
1  May-2017 5000    5000 
2  June-2017 3000 3000  0 
3  July-2017 1000 4400  -3300 
4  Aug-2017   1500  -1500 
+0

怎麼樣?你能爲我創建查詢嗎? –

回答

0

你哈已經通過移動它變成一個子查詢彙總resultsof工會:

Select year_month, sum(sale_amount) as sale_amount, sum(recover_amount) as recovery_amount, sum(sale_amount)-sum(recovery_amount) as balance 
From (
      SELECT SUM(amount) as sale_amount, DATE_FORMAT(Sale_Date, '%M %Y') as year_month, null as recovery_amount 
      FROM `SALE` GROUP BY DATE_FORMAT(Sale_Date, '%M %Y') 
      UNION ALL 
      SELECT null as sale_amount, DATE_FORMAT(recovery_Date, '%M %Y'), SUM(amount) as recovery_amount 
      FROM `recovery` GROUP BY DATE_FORMAT(recovery_Date, '%M %Y')) as t 
Group by year_month 

不幸的是,MySQL不支持完全外部聯接,因此上面這個美女。

+0

其工作,謝謝 –

相關問題