Sql 对串联字段执行不同计数并限制为>;=2.

Sql 对串联字段执行不同计数并限制为>;=2.,sql,oracle,Sql,Oracle,我对SQL非常陌生,尤其是对Oracle。我需要按连接字段“唯一提供者\患者\组合”进行计数,只包括>=2的记录–换句话说,只显示同一提供者/患者组合存在多次的记录。我很近,但不能一直到那里。我也尝试过用一个通用的表表达式来实现这一点,只是没有完成最后一步。基本查询如下。非常感谢您的帮助 SELECT DISTINCT pat.PAT_NAME "PATIENT" ,pat.PAT_ID ,prov.PROV_NAME "VISIT PROVIDER" ,prov.PROV_ID ,enc.CO

我对SQL非常陌生,尤其是对Oracle。我需要按连接字段“唯一提供者\患者\组合”进行计数,只包括>=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";

只需使用两个聚合:

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;

不确定这是否适用于Oracle,但SQL Server有一个
HAVING
子句-因此,您可以通过
a
HAVING COUNT(fieldName)>=2将其添加到
组中-对于Oracle@CoolBots
拥有
是核心SQL。所有支持
分组依据的SQL引擎也将支持
拥有
。我甚至不认为它们是SQL引擎,除非它们同时支持这两种语言,因为没有这种支持,它们只是SQL骗子;我尝试使用HAVING子句来实现这一点,但由于该列具有别名,因此没有得到结果。我试过:having count(“alias”)>=2,having count([alias])>=2,等等,但不起作用。你可以重复having
子句中的表达式,例如,
having count(DISTINCT prov.prov|ID | | | | | | | | | | | | | | | | | pat pat pat pat ID)>=2
,安德烈亚斯谢谢,很高兴知道!我同意它当然应该是核心SQL!