sql-server - 存储过程中的 IF ELSE 条件以包含或排除周末数据
问题描述
我需要修改 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 个公共假期等。
祝你好运。
推荐阅读
- vue.js - 材质图标字体文件 url 不正确
- flutter - 没有为“Uri”类型定义运算符“+”
- react-native - @walletconnect/client 抛出错误:尝试解析模块加密时
- python - 为什么多处理的每个进程开销不断增加?
- laravel - 如何向未经授权的客户隐藏网站的 Vue.js 管理面板代码
- reactjs - 如何防止 react-router 搞乱 API 路由
- linux - do_trap() 会导致 page_fault 吗?
- c++ - 如何从文本文件中按降序对时间戳进行排序
- javascript - Ajax done 方法中的代码无法识别已加载的代码
- firebase - Flutter 对两个列表进行排序而不是一个