• 1000 *
Если дата начала зачисления меньше, чем FirstDate, а дата окончания больше, чем lastDate. По сути, если дата начала и окончания извлечения данных не попадает в критерии для этого месяца, они исключаются.
Моя проблема заключается в том, что в следующие месяцы зачисленный участник может получить так называемую ретроактивированную регистрацию, что означает, что их даты соответствуют критериям предыдущих месяцев. Мне нужно иметь возможность записывать их как ретро-регистрацию в том месяце, в котором они представлены. Так что по сути
Количество января 2020 года = 343 Количество февраля 2020 года = 400 Ретро счет = 10 -> Они соответствуют критериям января 2020 года, но сообщалось при извлечении данных за февраль.
Любая помощь будет принята с благодарностью.
Спасибо
Вот что у меня есть на данный момент: -
--/Identify Gaps across date ranges
SELECT DISTINCT
[Issuer Extract Date],
[Exchange-Assigned Mbr ID],
CASE WHEN [NPN] IS NOT NULL THEN 'YES' ELSE 'NO' END AS BROKER,
[Coverage Year],
[NPN],
[Gender],
MIN([Benefit Start Date]) AS IslandStartDate,
MAX([Benefit End Date]) AS IslandEndDate
INTO MBRS
FROM
(
SELECT
*,
CASE WHEN GROUPS.PREVIOUSENDDATE >=[Benefit Start Date] THEN 0 ELSE 1 END AS STARTIND,
SUM(CASE WHEN GROUPS.PREVIOUSENDDATE >= [Benefit Start Date] THEN 0 ELSE 1 END) OVER
(ORDER BY [Exchange-Assigned Mbr ID], GROUPS.RN) AS INDID
FROM
(
SELECT DISTINCT
[Issuer Extract Date],
[Exchange-Assigned Mbr ID] ,
ROW_NUMBER() OVER
(ORDER BY [Exchange-Assigned Mbr ID], [Issuer Extract Date], [Benefit Start Date], [Benefit End Date])AS RN,
[Coverage Year],
[NPN],
[Gender],
[Residential City],
LEFT([Residential Zip], 5) Zip,
[Benefit Start Date],
[Benefit End Date],
LAG([Benefit End Date], 1) OVER
(ORDER BY [Exchange-Assigned Mbr ID], [Issuer Extract Date], [Benefit Start Date], [Benefit End Date]) AS PREVIOUSENDDATE
FROM
[dbo].Carrier
)GROUPS
) Islands
GROUP BY
[Exchange-Assigned Mbr ID],
[Issuer Extract Date],
[Coverage Year],
[NPN],
[Gender],
INDID
ORDER BY
[Exchange-Assigned Mbr ID];
--//Obtains first date that enrollee appeared in data extract.
SELECT DISTINCT
m.[HIOS ID],
m.[Exchange-Assigned Mbr ID],
MIN(M.[Issuer Extract Date]) FIRST
INTO
FIRST_DATE
FROM
[dbo].Carrier m
GROUP BY
m.[HIOS ID],
m.[Exchange-Assigned Mbr ID]
ORDER BY
[Exchange-Assigned Mbr ID] ASC;
--//Applies date logic for Monthly totals
SELECT
D.Month_Year,
M.*,
F.FIRST,
CASE WHEN
F.[FIRST] IS NOT NULL THEN 'YES' ELSE 'NO' END AS FIRSTDATE
INTO MBRS_FIRST
FROM MBRS m
LEFT JOIN [dbo].[DateofFile] D
ON D.Month_Year = M.[Issuer Extract Date]
LEFT JOIN FIRST_DATE F
ON F.[Exchange-Assigned Mbr ID] = M.[Exchange-Assigned Mbr ID]
AND F.FIRST = M.[Issuer Extract Date]
WHERE M.IslandStartDate < D.[First_Date]
AND M.IslandEndDate > D.[Last_Date]
ORDER BY
M.[Exchange-Assigned Mbr ID] ASC,
M.[Issuer Extract Date] ASC;
--counts enrollments by type
SELECT
DISTINCT
[Month_Year],
COUNT(DISTINCT([Exchange-Assigned Mbr ID]))MBR_CNT,
COUNT(CASE WHEN BROKER = 'YES' THEN 1 ELSE NULL END) AS BROKER_ENR,
COUNT(CASE WHEN BROKER = 'NO' THEN 1 ELSE NULL END) AS DIRECT_ENR,
COUNT(CASE WHEN BROKER = 'YES' AND FIRSTDATE = 'YES' THEN 1 ELSE NULL END) AS BROKER_NEW,
COUNT(CASE WHEN BROKER = 'NO' AND FIRSTDATE = 'YES' THEN 1 ELSE NULL END) AS DIRECT_NEW,
COUNT(CASE WHEN (BROKER = 'NO' OR BROKER = 'YES') AND FIRSTDATE = 'YES' THEN 1 ELSE NULL END) AS TOTAL_NEW
FROM MBRS_FIRST
GROUP BY
[Month_Year]
ORDER BY
[Month_Year] ASC;