SQL过滤多个值的重复ID

时间:2016-12-29 19:21:26

标签: sql

您好我正在尝试在SQL中执行计数查询,它会告诉我附加了2个特定代码的IDS的数量。我遇到的问题是表的结构。

enter image description here

例如,我知道Patient_ID ZZZZZ02SDU的CPT_code为2022F和3060F,但它们都在不同的行上。

如何将所有重复的ID组合起来计算一次,并将所有附加到这些patient_id行的CPT_code也进行过滤?

4 个答案:

答案 0 :(得分:0)

您可以使用HAVING过滤器执行此操作 - 它将在GROUP BY之后发生。

SELECT PATIENT_ID, COUNT(DISTINCT CPT_CODE)
FROM tablename
GROUP BY PATIENT_ID
HAVING COUNT(DISTINCT CPT_CODE) > 1

这将为您提供所有具有多个CPT_CODE的PATIENT_ID。

答案 1 :(得分:0)

select count(*) from (
  select count(*) AS S from table group by Patient_id having count(*)=2)
group S;

由于操作系统仅询问我的计数,我首先按Patient_id对表格行进行分组,每个计数器包含2个条目,然后基本计算这些计数并将其作为最外层查询中的答案。

答案 2 :(得分:0)

如果您在SQL Server或Oracle中,则可以使用以下SQL:

WITH PatientMedicalCodes AS
(
  SELECT DISTINCT Patient_ID, CPT_code
  FROM table_name
)
SELECT Patient_ID, COUNT(CPT_code)
FROM PatientMedicalCodes
GROUP BY Patient_ID
HAVING COUNT(CPT_code) > 1

答案 3 :(得分:0)

不确定具体代码是否如此:

{{1}}