У меня есть таблица со строками Дата, Сегмент, Площадь, Провинция и Billing_nbr.Я также хотел бы, чтобы число отличалось от Billing_nbr where total_revenue > 0
на основе даты в этой строке, возвращающейся к первому дню месяца (т. Е. Счет к месяцу).Это означает, что это должен быть кумулятивный счет всех billing_nbrs с первого дня месяца до даты наблюдения (которая является датой в каждой строке).Это означает, что если billing_nbr происходит в первый день, он также должен быть включен в счет за второй день, даже если он не встречается во второй день, но должен учитываться один раз, если это происходит в оба дня.И еще один нормальный счетчик Billing_nbr where total_revenue > 0
, сгруппированный по другим столбцам.Ниже приведены данные, которые у меня есть:

У меня есть Присоединение ниже, но оно дает мне похожие цифры по обоим пунктам:
SELECT
MAIN_TABLE.*,
TOT_SUBS_COUNT.N AS A1_SUBSCRIBERS_TOTAL,
TOT_SUBS_COUNT_MTD.N AS TOTAL_MTD_A1_SUBSCRIBERS
FROM (
select
ddate,
SUM(TOTAL_REVENUE) AS REVENUE_TOTAL,
segment,
province,
area
from CADA_PERMSISDN_DASHBOARD
GROUP BY province, area, segment, ddate
order by ddate
) MAIN_TABLE
JOIN(
select DDATE, count(DISTINCT BILLING_NBR) AS N, province, area, SEGMENT from CADA_PERMSISDN_DASHBOARD
WHERE TOTAL_REVENUE > 0
GROUP BY province, area, segment, ddate
ORDER BY DDATE
) TOT_SUBS_COUNT ON MAIN_TABLE.DDATE = TOT_SUBS_COUNT.DDATE
AND MAIN_TABLE.SEGMENT = TOT_SUBS_COUNT.SEGMENT
AND MAIN_TABLE.PROVINCE = TOT_SUBS_COUNT.PROVINCE
AND MAIN_TABLE.AREA = TOT_SUBS_COUNT.AREA
JOIN(
select DDATE, count(DISTINCT BILLING_NBR) AS N, province, area, SEGMENT from CADA_PERMSISDN_DASHBOARD
WHERE TOTAL_REVENUE > 0
AND DDATE BETWEEN trunc((DDATE),'month') AND DDATE
GROUP BY province, area, segment, ddate
ORDER BY DDATE
) TOT_SUBS_COUNT_MTD ON MAIN_TABLE.DDATE = TOT_SUBS_COUNT_MTD.DDATE
AND MAIN_TABLE.SEGMENT = TOT_SUBS_COUNT_MTD.SEGMENT
AND MAIN_TABLE.PROVINCE = TOT_SUBS_COUNT_MTD.PROVINCE
AND MAIN_TABLE.AREA = TOT_SUBS_COUNT_MTD.AREA
Первое объединение предназначено для сгруппированного подсчета, а второе объединение - для совокупного подсчета с первого дня месяца до даты наблюдения (которая является датой каждой строки), и оно должно быть сгруппировано по другимколонны также.Столбцы подсчета имеют псевдонимы A1_SUBSCRIBERS_TOTAL и OTAL_MTD_A1_SUBSCRIBERS соответственно.Ниже приведены данные, которые я получаю, и, как вы не видите, у меня одинаковые значения в обоих столбцах:
