0

我想要一个数据驱动的“时间表”,这意味着每个报告都有其独特的时间(存储在每分钟填充的表格中)。

For example: (not all fields included)

To                 Parameter     Format    NextRunDate         ReportStatus
bob[at]email.com   SalesRegion1  Email     1/1/2012 9:00:00   'Unprocessed'
joe[at]email.com   SalesRegion2  Email     1/1/2012 9:05:00   'Unprocessed'
sara[at]email.com  SalesRegion1  Email     1/1/2012 8:55:00   'Processed'

如果时间当前是 2012 年 1 月 1 日 9:01:00,我的数据驱动订阅“where 语句”将类似于...

where NextRunDate < GETDATE() -- in the past
   and ReportStatus = 'Unprocessed' -- <--here is my problem

此查询每分钟运行一次。它应该只为 bob[at]email.com 提取报告...

我的问题在这里:我需要添加逻辑,在发送报告后切换报告状态和“已处理”......否则它每次都会运行每个报告......

想法?其他让这个工作的方法?

运行 SQL Server 2k8 企业版

提前致谢!

4

1 回答 1

0

如果报告以类似的周期运行(如您的代码中每分钟或每五分钟),您可以使用 BETWEEN 和 DATEADD 减去分钟数(无论如何),以获取您上次运行报告到现在的时间。

{WHERE NextRunDate BETWEEN DATEADD(mi, -5, GETDATE()) AND GETDATE()}

我希望这会有所帮助。

于 2012-10-20T03:47:05.360 回答