【发布时间】:2011-03-15 17:24:36
【问题描述】:
我有以下疑问:
SELECT patient_id FROM patient_visit where visit_type in ('A', 'B', 'C')
group by patient_id having count(*) >= 2
获取至少进行过两次“A”、“B”或“C”类型就诊的所有患者的列表。
patient_visit 表还有一个 visit_date 列,用于存储就诊日期。我的问题:是否可以在不删除 group by 语句的情况下修改上述查询以查询“所有至少有两次就诊的患者,并且这两次就诊中的任何一次的差距为 60 天数”?
谢谢!
P.S.:我使用的是 Oracle,如果有内置函数,我也可以使用。
【问题讨论】:
-
大概您的意思是“这两次连续访问中的任何一次”,而不仅仅是“这两次访问中的任何一次”(即您不是在寻找使用
MAX和MIN的答案) -
为什么限制保留组?
-
@Martin 最好是任意两个日期
-
@Shannon 我有这个限制,因为这个语句是通过 XML 到 SQL 编译器生成的代码。保留 Group by 语句将使其对代码生成器进行简单的更改。
标签: sql oracle group-by aggregate aggregate-functions