结算周期内的多次定期收费

时间:2018-10-22 21:05:31

标签: mysql multiple-instances

每个部门每个月的帐单周期应该只有一个对帐单。

我的目标是找出在同一计费周期内,有多少个部门被打了多个账单(价值大于$ 0.00)。

内容:

我当前的查询设置为仅检查应该按月计费的部门。 部门表与对帐单表具有一对多关系(一个部门应具有一个或多个对帐单)

Statement表与Trans表具有一对多关系(一条语句应具有一个或多个事务)

每个结算对帐单都有自己的对帐单结算日期

c.type =“定期”是指在每个结算周期仅发生一次的帐单

d.period = 1代表每月结算的帐户

s.status =“已关闭”仅表示已关闭的语句

d.exp_date代表帐单到期日期

v.status =“处于活动状态”和d.status =“处于活动状态”是为了确保仅查询处于活动状态的部门。

我还尝试了在每个帐户的特定到期日期之间进行搜索。

我的查询的问题在于,它输出总值大于$ 0.00的billing statement_close_dates总数,而不是仅检查一个计费周期内是否多次出现。

如何修改此查询以仅将输出部门的每个实例的帐单周期内的一个以上账单实例包含一个大于0.00美元的定期类型费用?

查询:

    SELECT s.department_id, s.statement_id, COUNT(s.statement_close_date) AS sd, 
    t.trans_id, from_unixtime(s.statement_close_date)
    FROM statement s
    INNER JOIN trans t
    ON t.statement_id=s.statement_id
    INNER JOIN cde c
    ON t.cde=c.cde
    INNER JOIN department d
    ON s.department_id=d.department_id
    WHERE from_unixtime(s.statement_close_date) BETWEEN 
    DATE_SUB(from_unixtime(d.exp_date), INTERVAL 1 MONTH) AND 
    from_unixtime(d.exp_date)  
    AND d.period=‘1’
    AND s.status='closed'
    AND t.dollars>0
    AND c.type='periodic'
    GROUP BY s.statement_id DESC
    HAVING sd>1

样品输出:

department_id  statement_id  sd  trans_id   statement_close_date
1719712        9351464        3  98403043   2018-09-24 
1719709        9351463        2  98403026   2018-09-24 
1719708        9351462        2  98403010   2018-09-24 
1719665        9351457        3  97374764   2018-09-24 

0 个答案:

没有答案