我需要保存表格中记录计数的每日统计数据。
有没有办法每天自动计算记录并将结果写入另一个表?也许使用SQL Agent Job或类似的东西?
我正在使用SQL Server 2008。
谢谢!
修改 如果我今天从2010年1月1日删除所有记录,统计数据仍然需要显示在2010年1月1日当天结束时有500条记录。所以单独使用GetDate()并总结是行不通的,因为我在2010年1月1日使用该方法得到0条记录。
答案 0 :(得分:2)
在表中添加一列,如下所示:
ALTER TABLE My_Table
ADD insert_date DATETIME NOT NULL DEFAULT GETDATE()
然后,您可以将其作为SQL预期进行查询。
答案 1 :(得分:2)
插入触发器:更新今天的计数表记录(如果尚未创建则插入)
删除触发器:减少今天的计数表记录(如果尚未创建则插入)
答案 2 :(得分:1)
在我看来,你用最好的选择回答了你自己的问题。创建一个只调用存储过程来获取计数并加盖它们的作业。
Tom H.提到的另一个选择是更好的选择,但是如果你因为某种原因不能改变这个表,那么这个工作是个不错的选择。
另一种选择可能是在该表上放置一个插入触发器以在某处增加计数,但这可能会影响性能,具体取决于您实现它的方式。
通过SQL Management Studio界面设置作业非常简单,其中包含运行频率和要调用的存储过程的计划。您甚至可以直接在步骤的命令窗口中编写命令,而不是调用sp。
答案 3 :(得分:1)
如果这是不行,那么就像其他人所说的那样,创建第二个表,其中包含当天最后一条记录的PK字段,然后计算当天,然后创建一个最后运行的作业每天使用OrginalTable.PK>计算所有记录MAX(NewCountTable.Last_PK_Field)并将该行(Last_PK_Field,Count)添加到NewCountTable。
答案 4 :(得分:0)
SQL Job很好 - 是的。
或者您可以在默认为GETDATE()的表中添加日期列。如果你不希望你的日常计数受到事后删除记录的人的影响,那么这将无效。