SQL在一周内查找重复约会?

时间:2014-10-26 04:38:36

标签: sql vba pivot-table

我们正在努力消除治疗中心使用的波动。

目前我们在一周的某些日子(TUES / THURS)使用量很大,而不是其他日子(MON,WED,FRI)

现在,患者通常需要在接受治疗之前接受检查,然后才能进行有效治疗。"看到很多病人的医生。医生是兼职的,所以很容易转换日子。

然而,有时他们会参加传统的" (对于他们来说)每周预约,但不需要审查,因此可以将他们移到另一天(前进或后退一天)。

然而,只有在那一周有(1)预约(有些治疗是一周内的多天)时,这才有效。

所以:

第一。找到所有参加治疗的患者(LOCATION =" CHEMO")每天某一周(M / T / W / T / F)没有预约审查(LOCATION =" CLINIC")

第二。仅列出那周没有其他治疗的患者。

目前我在VBA代码中以编程方式执行此操作..但我想知道他们是否是一个更好的方法在SQL中列出一周中每一天的所有约会与ApptComment,看看他们是否可能是可移动的。

约会表:

ApptID - autoicrement
ApptDate
ApptTime
PatientID - unique to patient
LocationID - ("CHEMO","REVIEW")
ApptCancelledYN - Boolean
ApptComment - containts the treatment details

1 个答案:

答案 0 :(得分:0)

2)仅列出那周没有其他治疗的患者

我们假设用户输入是DATE(2014年12月26日 - >第4周)

declare @given_week int  
declare @given_month int  
declare @given_year int  
set @given_week  =(select DATEPART(ww,@GIVEN_DATE)  
set @given_month  =(select DATEPART(mm,@GIVEN_DATE)  
set @given_year  =(select DATEPART(yy,@GIVEN_DATE)  

- 以下查询将为您提供在该周内没有其他治疗的患者名单

select PatientID, count(PatientID) from 
AppointmentsTable
where DATEPART(ww,ApptDate) = @given_week  
and  DATEPART(mm,ApptDate) = @given_month  
and  DATEPART(yy,ApptDate) = @given_year  
group by PatientID
having count(PatientID) =1

or 

select PatientID,ApptComment, count(PatientID) from 
AppointmentsTable
where DATEPART(ww,ApptDate) = @given_week  
and  DATEPART(mm,ApptDate) = @given_month  
and  DATEPART(yy,ApptDate) = @given_year  
group by PatientID,ApptComment
having count(PatientID) =1

- 如有必要,在where子句中包含LocationID

1)找到所有参加治疗的患者(LOCATION =" CHEMO")每天某一周(M / T / W / T / F)谁没有预约复查( LOCATION =" CLINIC&#34)

declare @given_week int
declare @given_month int
declare @given_year int
set @given_week  =(select DATEPART(ww,@GIVEN_DATE)
set @given_month  =(select DATEPART(mm,@GIVEN_DATE)
set @given_year  =(select DATEPART(yy,@GIVEN_DATE)

select PatientID from AppointmentsTable 
where DATEPART(ww,ApptDate) = @given_week  
and  DATEPART(mm,ApptDate) = @given_month  
and  DATEPART(yy,ApptDate) = @given_year  
and LocationID = 'CHEMO' and PatientID NOT IN
(
select DISTINCT PatientID from AppointmentsTable 
where DATEPART(ww,ApptDate) = @given_week  
and  DATEPART(mm,ApptDate) = @given_month  
and  DATEPART(yy,ApptDate) = @given_year  
and LocationID = 'CLINIC'
and ApptComment like '%review%'
)