Предполагается, что каждый отдел должен иметь только одну выписку за ежемесячный цикл выставления счетов.
Моя цель - выяснить, сколько отделов было затронуто более чем одной выпиской по счету (стоимостью более 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