每个部门每个月的帐单周期应该只有一个对帐单。
我的目标是找出在同一计费周期内,有多少个部门被打了多个账单(价值大于$ 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