簡體   English   中英

選擇不大於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM