где оговорка, постановка дела - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно добавить к основному запросу оператор case, показанный ниже, чтобы исключить членов при разных датах.Как я могу добавить это в?Благодарю.

    SELECT DISTINCT
    PI.INDEX_VALUE, 
    LB.STATE,
    UNIQUE_ID, 
    'AL',
    'EN',
    MBP.START_DATE,
   ADD_MONTHS(MBP.START_DATE,12)
   FROM dwteam.PATIENT_DETAILS        PD 
   INNER JOIN dwteam.ADMIN_CLIENT        AC 
     ON AC.CLIENT_ID = PD.CLIENT_ID
        and AC.DELETED_BY is null
      --   and AC.IS_ACTIVE =1  
    INNER JOIN dwteam.MEM_BENF_PROG MBP
      ON MBP.MEMBER_ID = PD.PATIENT_ID
      and MBP.DELETED_BY is null
    INNER JOIN dwteam.BENF_PLAN_PROG BPP
       ON BPP.BEN_PLAN_PROG_ID = MBP.BEN_PLAN_PROG_ID
    INNER JOIN dwteam.BENEFIT_PROGRAM BPR
      ON BPR.BENEFIT_PROGRAM_ID = BPP.BENEFIT_PROGRAM_ID
      and BPR.DELETED_BY is null
    left JOIN dwteam.PATIENT_INDEX PI
      ON PI.PATIENT_ID=MBP.MEMBER_ID
      AND PI.INDEX_ID in (10073,10071)
    left join UHG_000613129.HFS_LOB_ID_XWALK LB
      on trim(upper(replace(replace(AC.CLIENT_NAME,'C&S',''),'M&R','')))=trim(upper(STATE_DESC))
    WHERE PROGRAM_NAME IN ('Healthy Pregnancy','High Risk Pregnancy')
        AND (sysdate  <  ADD_MONTHS(MBP.START_DATE,12)
        OR sysdate  <  ADD_MONTHS(MBP.END_DATE,12))





    CASE WHEN MBP.CLOSURE_ID = 40 THEN MBP.END_DATE - 120
         WHEN MBP.CLOSURE_ID IN (5,18,103) THEN MBP.END_DATE - 365
         ELSE MBP.END_DATE - 270 END AS END_DATE

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете использовать CTE для присвоения имени выражению, а затем использовать его для любых целей, которые вы хотите во внешнем запросе.

Я не знаю всех деталей вашего запроса, но для этого нужно принять следующееФорма:

with
x as (
  SELECT DISTINCT
    PI.INDEX_VALUE, 
    LB.STATE,
    UNIQUE_ID, 
    'AL',
    'EN',
    MBP.START_DATE,
    ADD_MONTHS(MBP.START_DATE,12) as m1,
    CASE WHEN MBP.CLOSURE_ID = 40 THEN MBP.END_DATE - 120
         WHEN MBP.CLOSURE_ID IN (5,18,103) THEN MBP.END_DATE - 365
         ELSE MBP.END_DATE - 270 END AS END_DATE1
  FROM dwteam.PATIENT_DETAILS PD 
  JOIN dwteam.ADMIN_CLIENT AC ON AC.CLIENT_ID = PD.CLIENT_ID
                             AND AC.DELETED_BY is null
  JOIN dwteam.MEM_BENF_PROG MBP ON MBP.MEMBER_ID = PD.PATIENT_ID
                               AND MBP.DELETED_BY is null
  JOIN dwteam.BENF_PLAN_PROG BPP ON BPP.BEN_PLAN_PROG_ID 
                                  = MBP.BEN_PLAN_PROG_ID
  JOIN dwteam.BENEFIT_PROGRAM BPR ON BPR.BENEFIT_PROGRAM_ID
                                   = BPP.BENEFIT_PROGRAM_ID
                                 AND BPR.DELETED_BY is null
  left JOIN dwteam.PATIENT_INDEX PI ON PI.PATIENT_ID=MBP.MEMBER_ID
                                   AND PI.INDEX_ID in (10073,10071)
  left join UHG_000613129.HFS_LOB_ID_XWALK LB 
    on trim(upper(replace(replace(AC.CLIENT_NAME,'C&S',''),'M&R',''))) 
     = trim(upper(STATE_DESC))
  WHERE PROGRAM_NAME IN ('Healthy Pregnancy','High Risk Pregnancy')
      AND (sysdate  <  ADD_MONTHS(MBP.START_DATE,12)
      OR sysdate  <  ADD_MONTHS(MBP.END_DATE,12))
)
SELECT *
FROM x
WHERE end_date1 > ... -- filtering predicate(s) using a named expression

Твик по необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...