我目前正在運行此查詢:選擇在沒有價值大於X
現在,顯然這只是要返回FormName
有一個TaskTargetDate
比2012年1月1日早些時候我'm試圖做的是發現FormName
s沒有TaskTargetDate
存在於過去的2年。因此,如果2010年,2011年和2013年有TaskTargetDate
的表單,則應該從2013年的日期完全排除查詢回報。
基本上我正在尋找不再使用的舊形式。
我目前正在運行此查詢:選擇在沒有價值大於X
現在,顯然這只是要返回FormName
有一個TaskTargetDate
比2012年1月1日早些時候我'm試圖做的是發現FormName
s沒有TaskTargetDate
存在於過去的2年。因此,如果2010年,2011年和2013年有TaskTargetDate
的表單,則應該從2013年的日期完全排除查詢回報。
基本上我正在尋找不再使用的舊形式。
一個NOT IN
應該給你的結果:
Select DISTINCT f.FormName
FROM Form f
WHERE f.FormKey NOT IN
(
SELECT ct.fFormKey
From PatientTask as pt
Inner Join ClinicTask ct on pt.fTaskKey = ct.fTaskKey
WHERE pt.TaskTargetDate >= CONVERT(datetime, '2012-01-01')
)
另外,CONVERT
是沒有必要的 - SQL會自動解析'2012-01-01'
的日期,因爲它是被比作日期值
您可以使用左外連接:
Select
DISTINCT f.FormName, pt.fTaskKey
From
Form f left outer join ClinicTask ct
on ct.fFormKey = f.FormKey
Inner Join
(
select fTaskKey
from PatientTask
WHERE pt.TaskTargetDate >= CONVERT(datetime, '2012-01-01')
) pt
on pt.fTaskKey = ct.fTaskKey
where ct.fFormKey is null