我正在处理一个SQL查询,该查询提取在给定日期在诊所预约的每个人的结果.对于前一个工作日发生的所有约会,我每天都会运行此查询.该查询非常基本:
SELECT
[a bunch of demographic and appointment-related fields]
FROM Demographics d JOIN ApptInfo ai ON d.PatientID = ai.PatientID
WHERE (ai.ApptDate >= DATEADD(dd,DATEDIFF(dd,1,GETDATE()),0)
AND ai.ApptDate < DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0))
到目前为止,这个方法运行得很好,除非我在星期一运行查询.在这种情况下,我需要能够调出前一个星期五100星期六的所有结果,因为诊所在星期六也开放半天.显然,我不能只看前一天的比赛,因为那天是星期天.
我可以在脑海中很清楚地看到我想要做的事情的逻辑,但我不确定具体如何设置它.它需要是这样的东西:
WHERE
(CASE
WHEN DATENAME(WEEKDAY, GETDATE()) = 'Monday' THEN [pull results where ApptDate is 3 days ago OR 2 days ago]
ELSE [the same code shown above that pulls the previous day]
END)
我是在正确的轨道上吗?当然,另一种 Select 是手动输入我想要查看的任何日期,但如果能够每天运行这个查询并使其完全自动化,即使是在星期一,那也是非常棒的.