我目前正在使用一些數據,顯示所有在診所接受過某種類型程序的患者。該程序類別由多個代碼組成,每個代碼代表屬於該類別的更具體的程序。診所的質量措施規定患者應在一定的時間內完成這些手術之一;問題在於,他們每個人都有不同的標準,關於他們何時可能發生以便出於質量目的進行計數。帶有多個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