查询在周末/每周一天内自动更改(MS SQL)

时间:2018-10-15 12:52:28

标签: sql sql-server

我在另一个数据库的表A上使用VIEW,以便将其插入/更新到表B中 该视图具有过滤新行以减少网络流量的条件:

SELECT ... from A
WHERE  new_records = 1

基于该视图,我有一个每小时运行一次的存储过程。

我想每周一次通过查询使用表A中的所有记录来验证表B

我想将“视图”更改为以下内容:

SELECT ... from A
-- WHERE new_records = 1

我想知道有一份能改变我观点的工作。但是我发现我无法在存储过程中执行ALTER VIEW。

是否可以包含

之类的内容
 IF today = Sunday then Do not use WHERE 
 ELSE
 ...WHERE

2 个答案:

答案 0 :(得分:4)

我将其实现为2个视图-第一个选择所有视图,第二个选择从第一个视图开始,并带有附加的new_records = 1过滤器。

您可以在单个视图中添加您要询问的逻辑:

WHERE datename(DW,GETDATE()) = 'Sunday' OR new_record=1

但是我真的不喜欢编码视图在特定日期改变行为的概念,当您要进行临时验证时会发生什么?你会被卡住。

该过程称为每小时一次,但您提到要每周检查一次,如果是单个视图,则在周日谓词上接听每小时呼叫时,您将在周日将其运行为24次检查。

最后的注释-如果您采用变更视图方法,则必须为执行帐户提供其他特权,否则可以避免这些特权。

答案 1 :(得分:1)

怎么样 where new_records=1 or datepart(weekday,getdate())=7