0

我想不出一个足够好的标题,但这是我的问题。

我在一个应用程序中有几个表,这些表以及其他一些东西将为电力公司的消费者生成每月账单。具体涉及三个表,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) 基于自该月以来消耗的总单位数的月度账单,然后加上欠款。

有什么建议么。

4

1 回答 1

0

1) 查询最后一张账单的支付时间。就像是:

SELECT FROM BILLING_HISTORY2 where ID = 'CUSTOMERIDHERE' ORDER BY READING_MONTH_YEAR DESC 

2) 获取第一条记录的日期变量并查找在该日期或之后出现的客户的所有读数(这假设人们支付了当天的费用)。

3) 然后,当您遍历与第 2 步中的条件匹配的每条记录时,将总费用添加到变量中。

4) 接下来,如果“payment_status”表示上一个账单尚未支付,请重复步骤 1-3,确保忽略上个月的日期记录(并获取 BEFORE THAT 之前的月份)。此外,仅搜索日期范围内的值。因此,如果之前的账单从 2 月 1 日开始,那么您上个月的范围应该是 1 月 1 日至 1 月。31. 然后,如果未支付该账单,请搜索 12 月 1 日至 12 月之间的费用。31. 基本上,您需要一次返回 1 个月,直到找到已付帐单(或不存在的帐单,表示在那之前没有服务),然后将您找到的值加到总金额中。

于 2013-02-17T06:19:16.760 回答