2013-04-05 57 views
0

SQL Server 2008 R2的 中顯示沒有相關的記錄記錄我有兩個表。一個Main記錄,另一個是與Main相關的Notes,其中包含一個公用密鑰字段sysid和main_id。 (可以有很多注意事項,以一個主記錄)SQL查詢到一個特定的日期範圍

我想列出在主表中的記錄沒有在Notes表中有關該記錄過去30天創造了一個紀錄。

主表中的字段> file_number,SYSID

注意事項表字段> note_date,main_id

我試圖從搜索一百個不同的建議,並沒有給我什麼,我需要。 我認爲下面是什麼最接近,但它只有在沒有注意到存在的話,我沒有看到有現有的筆記,但不主要記錄有任何在過去30天內給出了記錄。 我得到相同的結果,如果我拿出AND db.notes.[date] > DATEADD(dd,-30,getdate()))線。

SELECT * 
    FROM db.main 
WHERE NOT EXISTS(SELECT NULL 
     FROM db.notes 
     WHERE db.main.sysid = db.notes.main_id AND db.notes.[date] > DATEADD(dd,-30,getdate())) 
ORDER BY db.main.ile_number 

任何建議將不勝感激。

* *客戶已提出再列。上次備註日期。所以他們想要在x天沒有記錄的主要記錄列表以及最後一個記錄的日期是什麼。

+0

謝謝!我認爲這工作。唯一可以確認的方法是逐一記錄20,000條記錄,看看是否有記錄。我只需編輯一點它就可以處理我的數據。日期字段不是日期格式,它是在12/28/1800之後的x天,但是我使用了一個公式來轉換它,它看起來不錯。 – 2013-04-05 17:26:41

回答

0

我將與LEFT OUTER做到這一點JOIN:

select * 
from db.main m 
left outer join db.notes n on m.sysid = n.main_id 
    and n.[date] > dateadd(dd, -30, getdate())) 
where n.main_id is null 
order by m.ile_number 
+0

我的客戶要求提供額外的專欄。上次備註日期。所以他們想要在x天沒有記錄的主要記錄列表以及同一報告中最後一個記錄的日期是什麼。 – 2013-04-09 18:01:32

0

這是你在找什麼?

SELECT *

FROM db.main

WHERE SYSID NOT IN

(select main_id FROM notes) 

UNION

SELECT *

FROM db.main

哪裏不在系統中

(select main_id 

FROM notes 

WHERE notes.[date] > DATEADD(dd,-30,getdate()) 

) 
+0

這沒有奏效。它給了我一個錯誤「文本數據類型不能被選爲DISTINCT,因爲它不具有可比性。」不管怎麼說,還是要謝謝你。 – 2013-04-05 17:29:59