![](/img/trans.png)
[英]Postgres: Select all rows from array of objects where value >= x and also where no values are greater than x
[英]Select where no value is greater than X
我目前正在運行此查詢:
SELECT DISTINCT f.FormName
FROM PatientTask as pt
INNER JOIN ClinicTask ct
ON pt.fTaskKey = ct.fTaskKey
INNER JOIN Form f
ON ct.fFormKey = f.FormKey
WHERE pt.TaskTargetDate <= CONVERT(datetime, '2012-01-01');
現在,很明顯,這只是要返回具有早於2012年1月1日的TaskTargetDate
FormName
。我想要做的是查找沒有過去兩年存在的TaskTargetDate
FormName
。 因此,如果在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.