Выполнение COUNT DISTINCT для объединенного поля и ограничение до> = 2 - PullRequest
0 голосов
/ 10 мая 2018

Я довольно новичок в SQL и особенно в Oracle.Мне нужно считать по объединенному полю «UNIQUE_PROVIDER_PATIENT_COMBO» И включать только те записи, которые имеют> = 2 - другими словами, показывать только те, в которых один и тот же поставщик / пациент существует более одного раза.Я близко, но не могу пройти весь путь.Я попытался сделать это с помощью общего табличного выражения, но просто не получил последний шаг.Базовый запрос ниже.Помощь будет высоко ценится!

SELECT DISTINCT
pat.PAT_NAME "PATIENT"
,pat.PAT_ID
,prov.PROV_NAME "VISIT PROVIDER"
,prov.PROV_ID
,enc.CONTACT_DATE "VISIT DATE"
,prov.PROV_NAME || ' ' || '+' || ' ' || pat.PAT_NAME   AS "PROVIDER + PATIENT"
,prov.PROV_ID || ' ' || '+' || ' ' || pat.PAT_ID   AS "UNIQUE_PROVIDER_PATIENT_COMBO"

FROM  
CMRCL_TFH.PATIENT pat 
INNER JOIN CMRCL_TFH.PAT_ENC enc ON pat.PAT_ID = enc.PAT_ID
INNER JOIN CMRCL_TFH.CLARITY_DEP dep ON enc.DEPARTMENT_ID =   dep.DEPARTMENT_ID
INNER JOIN CLARITY_SER prov ON enc.VISIT_PROV_ID = prov.PROV_ID

WHERE 
enc.CONTACT_DATE BETWEEN '01-JAN-18' AND '31-MAR-18'

GROUP BY 
pat.PAT_NAME
, pat.PAT_ID
, prov.PROV_NAME
, prov.PROV_ID
, enc.CONTACT_DATE
, prov.PROV_NAME || ' ' || '+' || ' ' || pat.PAT_NAME
, prov.PROV_ID || ' ' || '+' || ' ' || pat.PAT_ID

ORDER BY "PROVIDER + PATIENT";

1 Ответ

0 голосов
/ 11 мая 2018

Просто используйте два агрегата:

SELECT COUNT(*)
FROM (SELECT prov.PROV_NAME || ' ' || '+' || ' ' || pat.PAT_NAME as provider_patient
      FROM CMRCL_TFH.PATIENT pat INNER JOIN
           CMRCL_TFH.PAT_ENC enc
           ON pat.PAT_ID = enc.PAT_ID INNER JOIN
           CMRCL_TFH.CLARITY_DEP dep
           ON enc.DEPARTMENT_ID = dep.DEPARTMENT_ID INNER JOIN
           CLARITY_SER prov 
           ON enc.VISIT_PROV_ID = prov.PROV_ID
      WHERE enc.CONTACT_DATE BETWEEN DATE'2018-01-01' AND DATE'2018-03-31'
      GROUP BY prov.PROV_NAME || ' ' || '+' || ' ' || pat.PAT_NAME
      HAVING COUNT(*) >= 2
     ) pp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...