如何按月计算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'