Несколько периодических платежей в биллинговом цикле - PullRequest
0 голосов
/ 23 октября 2018

Предполагается, что каждый отдел должен иметь только одну выписку за ежемесячный цикл выставления счетов.

Моя цель - выяснить, сколько отделов было затронуто более чем одной выпиской по счету (стоимостью более 0,00 долл. США) в пределахтот же платежный цикл.

КОНТЕКСТ:

Мой текущий запрос настроен на проверку только тех отделов, которые должны оплачиваться ежемесячно.Таблица «Отдел» имеет отношение «один ко многим» с таблицей «Оператор» (ожидается, что в отделе будет один или несколько операторов)

Таблица «Оператор» имеет отношение «один ко многим» с таблицей «Транс» (оператор должениметь одну или несколько транзакций)

У каждой выписки по счету есть своя собственная date_close_date

c.type = 'периодический' относится к счету, который появляется только один раз за цикл выставления счетов

d.period = 1 представляет счета, ежемесячные счета которых выставляются

s.status = 'closed' представляет только закрытые отчеты

d.exp_date представляет дату истечения срока выставления счета

v.status ='active' и d.status = 'active' предназначены для обеспечения того, чтобы запрашивались только активные отделы.

Я также пытался искать между конкретными датами истечения для каждого аккаунта.

проблема с моим запросом состоит в том, что он выводит общее количество биллинговых операторов Statement_close_dates со значением, превышающим 0,00 долл. США, вместо проверки только несколькихвходит в биллинговый цикл.

Как можно изменить этот запрос, чтобы выводить только отделы с более чем одним экземпляром счета-фактуры, состоящего из периодической оплаты за тип, превышающей 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 
...