我需要计算一个诊所的插槽利用率(重新预订率)

时间:2018-04-21 17:46:11

标签: sql-server tsql

我在一个名为activity的表中有数据,其中包含有关诊所时间的信息,当约会开始时和结束时,这些插槽使用scheduleID标识唯一标识一个插槽,我有其他列,其中包含有关是否一个人参加了这个时段(参加,DNA,取消)。

我的任务是计算重新预订费率,找出已取消的插槽数量以及取消的日期(dateiff)以及随后是否重新预订以及重新预订的日期。

我编写了一个查询,该查询在给定时间段内选择已取消的appt数量,这会给出一个已取消的所有appt插槽的列表,例如。 scheduleID,date_apptmentstart,apptend,是否参加,(例如参加,取消),约会被取消的日期,是否重新预订了插槽以及有人参加。

然后我将表加入到自身以查找插槽是否已重新预订,这可以返回多行(重复),因为插槽可以在有人参加之前预订和取消多次,我需要找到时间之间的差异插槽被取消了,当它被r-ebooked和有人参加。我需要使用下面的结果集来计算重新订阅率。我认为我有正确的结果集,即根据是否重新预订来查找canceldate和slotdate(即apptstartdate)之间的约会,谢谢。

创建表约会 如

  CREATE TABLE [dbo].[appointments](
  [scheduleID] [int] NOT NULL PRIMARY KEY CLUSTERED,
  [Apptstartdate] [datetime] NOT NULL,
  [Apptenddate] [datetime] NOT NULL,
  [attend_description] [nvarchar](50) NOT NULL
  [datecancelled] (datetime) NULL
  [clinicsession] nvarchar (30) NOT NULL

  GO

select
     a.scheduleID,
     a.clinicsession
     a.apptstartDate,
     a.apptendDate,
     a.Attend_description,
     a.Datecancelled,

     datediff(day, b.canceldate,a.appt_startdate) as daysTocancel,

     b.scheduleid,
     b.apptstartDate,
     b.apptendDate,
     b.appt_Createdate,
     b.attend_description,
     b.canceldate,

    case
       when a.canceldate is null then 1 else
       0 end as [SlotFilled]

      FROM  Activity as a

      inner join Activity as b
      on a.scheduleid=b.scheduleid and
      b.apptstartdate>=b.apptstartdate

      where left(a.attend_description,4) = 'canc' and
      a.ApptSTARTdate between '03-apr-2018' and '04-apr-2018'

enter link description here

0 个答案:

没有答案