最后一个工作日的MS SQL高级作业计划

时间:2018-09-18 09:05:48

标签: sql-server

给(对我们来说)每天约2GB的大数据流。此数据必须合并/结构化/清除到目标数据库中(此部分已解决)。

直到现在,我们每天都要为当月的整个数据集删除并创建一个新的数据表,然后将其合并为前几个月的数据集的物化表。

此外,这是一种非常不雅观的方式,不幸的是,到本月底,此查询变得非常庞大,每天消耗服务器长达1.5小时。

我认为我可以通过获取DateMax的所有数据来对日期进行参数化查询 (

declare @ReportDateMax datetime
set @ReportDateMax = dateadd(dd,-1, cast(getdate() as date)

但是还不够好-
问题如下:
     1.周一我们需要下载周五的数据
     2.星期一星期二
     3.周三星期二
     4.周四星期三
     5.周四星期五

这意味着我不能只下载昨天的信息,因为星期一无法获得任何信息。 同样理想的是,如果我们只是每日数据,那么我希望每天运行两次,以选择上一个报告日的查询。

所需的解决方案:
设计一个查询,以选择上一个工作日(公共假期与该主题无关)。

1 个答案:

答案 0 :(得分:0)

我终于在另一篇文章中找到了解决方案。 如果其他人有兴趣:

                    SELECT  DATEADD(DAY, CASE DATENAME(WEEKDAY, GETDATE()) 
                    WHEN 'Sunday' THEN -2 
                    WHEN 'Monday' THEN -3 
                    ELSE -1 END, DATEDIFF(DAY, 0, GETDATE()))