【发布时间】:2018-05-08 18:19:10
【问题描述】:
我有一个查询,它从临时表 myTblTemp 向表 myTbl 中插入一些新记录。
如果日期是星期六或星期日,我会在查询中调整“AnnDate”字段之一。但是,如果日期是银行假日,我还需要调整 AnnDate。
我有一张表 tblBankHoliday,其中列出了所有需要的即将到来的银行假期。如果在 tblBankHoliday 中找到了 AnnDate,我该如何调整我的查询(或者我是否需要一个单独的查询)以增加一天的日期?
我当前的查询
insert into myTbl(AnnDate, USDVal)
case DATENAME(WEEKDAY, AnnDate)
when 'Saturday'
then DATEADD(DD, 2, AnnDate)
when 'Sunday'
then DATEADD(DD, 1, AnnDate)
else AnnDate
end
from myTblTemp
【问题讨论】:
-
与
tblBankHoliday相比,您是否考虑过使用一个包含所有日期的日历表来列出所有 个日期。然后,您通常会得到(从其他列计算或直接存储)一个“是工作日”样式的列,您可以从该列中以 uniform 方式解决此问题,而不是尝试处理周末和银行假期分别。 -
这可能是一个好的开始:Bones of SQL - The Calendar Table
标签: sql sql-server