我想不出一个足够好的标题,但这是我的问题。
我在应用程序中有几个表,其他东西将为电力公用事业的消费者生成每月账单。具体涉及三个表, 1)消费者表 2)账单历史表 3)费率清单表
对于不同类型的连接,每单位消耗的价格不同,例如,每月消耗多达50个单位的国内连接会比使用每月消耗50个单位的商业连接低得多。
结构位于http://www.sqlfiddle.com/#!3/eeab6
Consumers表中的application_nature字段定义了COMMERCIAL或DOMESTIC的连接类型。
billing_history2表中的payment_status存储一个布尔值,表示是否已支付账单。
使用此查询,我会生成消费者的总消费量,如果有的话,则会产生欠款。
SELECT BILLING_HISTORY2.CONSUMER_ID, count(reading) AS 'DEFAULT PERIOD', SUM(reading) AS 'Total Reading' from BILLING_HISTORY2 where payment_status=0 GROUP by billing_history2.CONSUMER_ID;
我想要的是生成 1)基于自上次支付账单以来消耗的总单位的月度账单。 2)每月账单,根据自本月以来消耗的总单位,然后加上欠款。
任何建议。
答案 0 :(得分:0)
1)查询最后一张账单的时间。类似的东西:
SELECT FROM BILLING_HISTORY2 where ID = 'CUSTOMERIDHERE' ORDER BY READING_MONTH_YEAR DESC
2)获取第一个记录的日期变量,并查找该日期或之后出现的所有客户读数(假设人们支付当天的费用)。
3)然后,当您循环浏览与步骤2中的条件匹配的每条记录时,在变量中一起添加总费用。
4)接下来,如果'payment_status'表示尚未支付上一个账单,请重复步骤1-3,确保忽略上个月的日期记录(并在此之前获得月份)。此外,仅搜索日期范围内的值。因此,如果之前的账单从2月1日开始,那么您上一个月的范围应该是1月1日至1月。 31.如果该账单未支付,请在12月1日至12月期间搜索费用。 31.基本上,你需要一次一个月地回去,直到找到付费账单(或不存在的账单,这意味着之前没有服务),并将你找到的值添加到总数中。