Sql 患者在同一天有多个预约,并显示两个预约
我试图找到在同一天有超过1次预约的患者。然后,我想显示患者可能拥有的所有预约。我是否需要使用子查询来执行此操作?以下是我到目前为止的情况:Sql 患者在同一天有多个预约,并显示两个预约,sql,Sql,我试图找到在同一天有超过1次预约的患者。然后,我想显示患者可能拥有的所有预约。我是否需要使用子查询来执行此操作?以下是我到目前为止的情况: Select Appt.ID-PatNm as Patient, ApptNum, Sched_ApptType.Prov.Mnemonic as Type, Appt.Provider-Name as Provider, Appt.Dt, Appt.Tm, Appt.Department-Mnemonic As Dept,
Select
Appt.ID-PatNm as Patient,
ApptNum,
Sched_ApptType.Prov.Mnemonic as Type,
Appt.Provider-Name as Provider,
Appt.Dt,
Appt.Tm,
Appt.Department-Mnemonic As Dept,
Appt.SchedulerInits,
Case $EXTRACT(Appt.InternalStatus,1)
when 'P' then 'Pending'
when 'A' then 'Arrived'
when 'R' then 'Rescheduled'
End as Status
From Sched.Appointment Appt
JOIN Sched_ApptType.Prov ON
Appt.Department = Sched_ApptType.Prov.Department
and
Appt.Provider = Sched_ApptType.Prov.Provider
and
Appt.Type = Sched_ApptType.Prov.ApptType
Where (Appt.Dt) > DATEADD('DD',-120,CURRENT_DATE)
AND Appt.InternalStatus IN ('P','R','A')
AND Appt.Department-Mnemonic= 'EYE'
Group By
Appt.ID-PatNm,
Appt.Dt
通过按患者和日期分组,您可以让患者在一天内有多个预约:
select distinct a.id_patnm
from sched.appointment a
group by a.id_patnm, a.dt
having count(*) > 1
因此,是的,您需要一个子查询:
Where (Appt.Dt) > DATEADD('DD',-120,CURRENT_DATE)
AND Appt.InternalStatus IN ('P','R','A')
AND Appt.Department_Mnemonic= 'EYE'
AND Appt.ID_PatNm IN
(
select a.id_patnm
from sched.appointment a
group by a.id_patnm, a.dt
having count(*) > 1
)
(顺便说一句:我在这里使用了
id\u patnm
而不是id patnm
,因为我不知道任何DBMS会允许连字符。在列名中使用连字符时,必须在名称上使用引号,例如“id patnm”
)通过按患者和日期分组,可以让患者在一天内有多个预约:
select distinct a.id_patnm
from sched.appointment a
group by a.id_patnm, a.dt
having count(*) > 1
因此,是的,您需要一个子查询:
Where (Appt.Dt) > DATEADD('DD',-120,CURRENT_DATE)
AND Appt.InternalStatus IN ('P','R','A')
AND Appt.Department_Mnemonic= 'EYE'
AND Appt.ID_PatNm IN
(
select a.id_patnm
from sched.appointment a
group by a.id_patnm, a.dt
having count(*) > 1
)
(顺便说一句:我在这里使用了
id\u patnm
而不是id patnm
,因为我不知道任何DBMS会允许连字符。在列名中使用连字符时,必须在名称上使用引号,例如“id patnm”
)我想你可以为约会id添加一列,这样你就可以得到想要的结果。我想你可以为约会id添加一列,这样你就可以得到想要的结果。标记使用的dbms。(因为您有一些非ANSI SQL…)请注意:看到ID PatNm
、提供商名称
和部门助记符是很奇怪的。它们看起来像减法,但我认为它们应该是列名,对吗?您的DBMS允许这样做吗?使用标记DBMS。(因为您有一些非ANSI SQL…)请注意:看到ID PatNm
、提供商名称
和部门助记符是很奇怪的。它们看起来像减法,但我认为它们应该是列名,对吗?你们的数据库管理系统允许吗?谢谢Thorsten的提示。这就是语法。我尝试运行查询,但收到一个错误,表示查询结束后遇到了输入(where)。它不允许我在Where之前有having count(*)>1。不,having
在groupby
之后,groupby
在Where
之后。如果要将where子句添加到子查询中,请将其放在分组依据之前。感谢Thorsten提供的提示。这就是语法。我尝试运行查询,但收到一个错误,表示查询结束后遇到了输入(where)。它不允许我在Where之前有having count(*)>1。不,having
在groupby
之后,groupby
在Where
之后。如果要将where子句添加到子查询中,请将其置于GROUPBY
之前。