Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Mysql如果月份相同,如何在相同的行中获得结果_Mysql_Sql - Fatal编程技术网

PHP Mysql如果月份相同,如何在相同的行中获得结果

PHP Mysql如果月份相同,如何在相同的行中获得结果,mysql,sql,Mysql,Sql,我有大麻烦了,我需要你的帮助,我有两张桌子,一张是销售桌,另一张是恢复桌。我的要求是获得月度报告,因此我在使用Union All的查询中使用date_格式,其工作正常,但问题是,如果月份相同,它将在不同的销售和回收行中显示结果 销售: 恢复: ID(unique) Party Amount Recovery_Date 1 95 1000 01-06-2017 2 97 2000 20-06-2017

我有大麻烦了,我需要你的帮助,我有两张桌子,一张是销售桌,另一张是恢复桌。我的要求是获得月度报告,因此我在使用Union All的查询中使用date_格式,其工作正常,但问题是,如果月份相同,它将在不同的销售和回收行中显示结果

销售:

恢复:

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
我希望得到每月的结果,所以我在UNIONALL查询中使用DATE\ U格式。下面是我正在使用的查询

"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
上面的结果是好的,但我需要以下格式的结果,以获得正确的余额金额

预期结果:

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

您必须通过将联合的结果移动到子查询中来聚合它:

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不支持完全的外部联接,因此具有上述优点。

您必须通过将联合的结果移动到子查询中来聚合它:

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不支持完全的外部连接,因此上面有这样的优点。

如何?你能帮我创建这个查询吗?你能帮我创建一个查询吗。