首页 > 解决方案 > 存储过程中的 IF ELSE 条件以包含或排除周末数据

问题描述

我需要修改 SQL Server 中的存储过程。

它目前正在从数据库中的汇率表中获取不包括周末的日期的数据。即货币汇率表有所有货币的每日数据。

现在我需要添加一个条件,包括一个“排除周末”标志;打开时,此标志将排除周末,如果关闭,它将显示一周中所有日子的数据。

标签: sql-server

解决方案


两个选项,让循环保持原样并从列表中删除周末。或者创建一个日期查找表。两者都假设您传入参数@excludeWeekendFlag = 'N'。

--option 1:
    SELECT  Date  , Weekname  ,Dayofweek, B.Value , B.currencyCode , B.currencyName  INTO 
    #TEMP FROM @tempdatetable 
    CROSS JOIN  
    ( select A.Value , B.currencyCode , B.currencyName from #tempCurr A INNER JOIN 
    CURRENCY(NOLOCK) B ON A.Value =B.currency ) B 
    --- Exclude weekends
    WHERE (DATEPART(dw,GETDATE()) != 7 AND DATEPART(dw,GETDATE()) != 0 AND @ExcludeWeekends = 'Y') OR @ExcludeWeekends = 'N'

另一种方法是让一个表格充满日期,并在每个表格旁边都有一个类型。比如 0 个工作日 1 个周末 2 个公共假期等。

祝你好运。


推荐阅读