Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
如何按月计算MYSQL中已支付的账单总数和未支付的账单总数_Mysql_Sql_Sum - Fatal编程技术网

如何按月计算MYSQL中已支付的账单总数和未支付的账单总数

如何按月计算MYSQL中已支付的账单总数和未支付的账单总数,mysql,sql,sum,Mysql,Sql,Sum,当我选择一个表的值时 SELECT DATE_FORMAT(created,'%Y-%m') ,DATE_FORMAT(payday,'%Y-%m') ,SUM(IF(paid = 'S',total,0)) as total_paid_on_this_month ,SUM(IF(paid = 'N',total,0)) as total_debt_on_this_month_plus_anterior_months FROM bills GROUP BY DA

当我选择一个表的值时

SELECT 
    DATE_FORMAT(created,'%Y-%m')
    ,DATE_FORMAT(payday,'%Y-%m')
    ,SUM(IF(paid = 'S',total,0)) as total_paid_on_this_month
    ,SUM(IF(paid = 'N',total,0)) as total_debt_on_this_month_plus_anterior_months
FROM bills
GROUP BY DATE_FORMAT(created,'%Y-%m')
餐桌上的账单

+ ---------- + ---- + ---------- + ------ + ----- +
| created    | paid | data_paid  | by     | total |
+ ---------- + ---- + ---------- + ------ + ----- +
| 2016-05-03 | Y    | 2016-08-03 | amy    | 10,00 |
| 2016-06-10 | Y    | 2016-07-03 | jorge  | 20,00 |
| 2016-05-20 | N    | 0000-00-00 |        |  5,00 |
| 2016-07-05 | N    | 0000-00-00 |        |  0,00 |
+ ---------- + ---- + ---------- + ------ + ----- +
我需要的是每月的账单金额(前几个月的金额)和支付的总金额(仅支付当月的金额)

例如:

one bill(10,00) was created at month 1 and paid at month 4
所以

我需要什么

month 1      2      3      4
paid  00,00  00,00  00,00  10,00
bill  10,00  30,00  30,00  20,00
我得到了什么

month 1      2      3      4
paid  00,00  00,00  00,00  10,00
bill  10,00  20,00  00,00  20,00
我试过了

SELECT
    created as Start
    ,total
    ,DATE_FORMAT(IF(paid = 'S',data_paid,CURRENT_TIMESTAMP()),'%Y-%m') as End

FROM 'Bills'
并在foreach中的PHP上求和

有人能帮我吗?我能做些什么

我所看到的:


我根本不太了解你的数据或你的10件事。不管怎样,你在这个问题上做得很好+1在我得到的情况下,您是如何获得输出的?这个问题在哪里?看,问题变了。但这个标准设置得太低了,以至于这些天即使是乱七八糟的数据对我来说也足够好了。这真的不可能。您正在对
创建的
进行分组。因此,如果(假设)您有两张账单,都是1月1日创建的,但一张是2月1日支付的,另一张是3月1日支付的,那么由于分组,您将丢失2月/3月数据。您需要两个单独的查询,一个用于计算创建,另一个用于计算支付。您的查询结果布局是一个透视表,mysql不支持。解决方法非常难看,速度非常快,无法处理任意的NxM行/列转换。
SELECT
    created as Start
    ,total
    ,DATE_FORMAT(IF(paid = 'S',data_paid,CURRENT_TIMESTAMP()),'%Y-%m') as End

FROM 'Bills'