我目前正在使用一些数据,显示所有在诊所接受过某种类型程序的患者。该程序类别由多个代码组成,每个代码代表属于该类别的更具体的程序。诊所的质量措施规定患者应在一定的时间内完成这些手术之一;问题在于,他们每个人都有不同的标准,关于他们何时可能发生以便出于质量目的进行计数。带有多个CASE语句的SQL查询
让我分解它,并希望解释它好一点。假设我们有3个代码,每个都代表一种程序。
CODE DESCRIPTION
--------------------
1234 Basic procedure
5678 Intermediate procedure
9012 Thorough procedure
现在,这些类型的程序都有自己的时间表。基本版本必须在过去一年内完成才能进行计数。中间一个可以从过去的任何时候开始四个年,而一个完整的一个好的为十个年。因此,2014年有中间程序的患者仍将计入质量目标,2009年完全程序的患者仍将计数。
我有我的基本查询:
SELECT DISTINCT
PatientID,
PatientAge,
ProcedureCode,
CodeDescription,
ServiceDate,
RenderingProvider,
VisitType
FROM ServiceDetail
WHERE ProcedureCode IN ('1234','5678','9012')
(是的,程序代码存储为VARCHAR处理,因为在实际的数据库中某些是字母和数字)
现在,我想成为能够使用IF/THEN/ELSE逻辑来执行某些操作,这在SQL中是一种CASE语句,除非我错了),可以查看代码的类型,过程发生的服务日期以及确定是否程序用于质量目的。
实施例的伪代码:
IF ProcedureCode = 5678
AND ServiceDate is between [GETDATE() minus 4 years] and GETDATE()
THEN Yes
有会是对于两个其它程序类型与各自的时限相同的语句。我希望查询只在这些情况返回true时才显示结果。
我的问题是,我知道什么我需要做的,但我的SQL是生锈的,我不知道怎么向做到这一点。基本上我正在寻找关于语法的提示。
是否有这些服务细节的唯一ID? – scsimon
@scsimon有一个访问ID字段可用于此目的,是的,虽然我没有将它包括在我的查询中 – EJF
您需要查询'ServiceDetail'表吗?它的结构是什么? – gaganshera