SQL Server 2008 R2 我有两张桌子。一个Main记录,另一个是与Main相关的Notes,具有公共密钥字段sysid和main_id。 (一个主要记录可以有很多注释)
我想在Main表中列出在与该记录相关的最近30天内没有在Notes表中创建的记录的记录。
主表FIELDS> file_number,sysid
备注表FIELDS> 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 :(得分: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
答案 1 :(得分:0)
这就是你要找的东西吗?
SELECT *
FROM db.main
WHERE sysid NOT IN
(select main_id FROM notes)
UNION
SELECT *
FROM db.main
WHERE sysid NOT IN
(select main_id
FROM notes
WHERE notes.[date] > DATEADD(dd,-30,getdate())
)