Как рассчитать ретро-активацию - PullRequest
0 голосов
/ 06 августа 2020
• 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;
  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...