【发布时间】:2013-04-09 06:21:24
【问题描述】:
SQL Server 2008 R2 我有两张桌子。一个 Main 记录,另一个是与 Main 相关的 Notes,具有公共键字段 sysid 和 main_id。 (一个主记录可以有很多注释)
我想在 Main 表中列出过去 30 天内没有在 Notes 表中创建的与该记录相关的记录。
主表字段 > file_number, sysid
Notes 表字段 > 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 天内没有注释的主要记录列表以及最后一个注释的日期。
【问题讨论】:
-
谢谢!这行得通,我想。唯一确认的方法是逐条检查 20,000 条记录,看看是否有注释。我只需要编辑一点就可以处理我的数据。日期字段不是日期格式,它是 1800 年 12 月 28 日之后的 x 天,但我使用了一个公式来转换它,它看起来不错。
标签: sql-server-2008 tsql