使用工作日和日历日更新表格

2024-07-01

我在 SQL Server 2012 中有一个表,每月手动更新一次,以反映文件预计进入的日期。日期规则已经有值,但预期日期列是手动更新的。如果预计在 BD1(第 1 个工作日),我将更新到该月的第一个非周末。如果预计在 CD1(日历日 1),我将更新到第一天,无论它是在工作日还是周末等等。是否可以编写一个更新查询,它会循环遍历值并自动更新?我无法确定更新到正确的工作日。



date rule  | March expected date | April expected date |
--------------------------------------------------------
| BD1      | 3/1/2017            | 4/3/2017            |
| BD2      | 3/2/2017            |                     |
| BD3      | 3/3/2017            |                     |
| BD4      | 3/6/2017            |                     |
| BD5      |                     |                     |
| BD6      |                     |                     |
| CD1      | 3/1/2017            |                     |
| CD2      | 3/2/2017            |                     |
| CD3      | 3/3/2017            |                     |
| CD4      | 3/4/2017            |                     |
| CD5      | 3/5/2017            |                     |
| CD6      | 3/6/2017            |                     |

  

我使用以下代码来计算第一个工作日

SELECT DATEADD(DAY,
CASE
    (DATEPART(WEEKDAY, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) + @@DATEFIRST - 1) % 7
    WHEN 6 THEN 2 
    WHEN 7 THEN 1
    ELSE 0
END,
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)

)

但当到了第 4 个工作日时,它会给我 3/4/2017,这是一个星期六,而不是 3/6/2017,这是下一个星期一。我对如何解决这个问题感到困惑。我认为循环更新查询是最好的


干得好。此递归 CTE 将为您提供整个月的 BD:

declare @forwhichdate datetime
set @forwhichdate ='20170401'
;with bd as(
select 
DATEADD(DAY,
CASE
    (DATEPART(WEEKDAY, DATEADD(MONTH, DATEDIFF(MONTH, 0, @forwhichdate), 0)) + @@DATEFIRST - 1) % 7
    WHEN 6 THEN 2 
    WHEN 7 THEN 1
    ELSE 0
END,
DATEADD(MONTH, DATEDIFF(MONTH, 0, @forwhichdate), 0)
) as bd, 1 as n
UNION ALL
SELECT DATEADD(DAY,
CASE
    (DATEPART(WEEKDAY, bd.bd) + @@DATEFIRST - 1) % 7
    WHEN 5 THEN 3
    WHEN 6 THEN 2
    ELSE 1
END,
bd.bd
) as db, 
bd.n+1
from bd where month(bd.bd) = month(@forwhichdate)
)
select * from bd

Result:

bd                      n
----------------------- -----------
2017-04-03 00:00:00.000 1
2017-04-04 00:00:00.000 2
2017-04-05 00:00:00.000 3
2017-04-06 00:00:00.000 4
2017-04-07 00:00:00.000 5
2017-04-10 00:00:00.000 6
2017-04-11 00:00:00.000 7
2017-04-12 00:00:00.000 8
2017-04-13 00:00:00.000 9
2017-04-14 00:00:00.000 10
2017-04-17 00:00:00.000 11
2017-04-18 00:00:00.000 12
2017-04-19 00:00:00.000 13
2017-04-20 00:00:00.000 14
2017-04-21 00:00:00.000 15
2017-04-24 00:00:00.000 16
2017-04-25 00:00:00.000 17
2017-04-26 00:00:00.000 18
2017-04-27 00:00:00.000 19
2017-04-28 00:00:00.000 20
2017-05-01 00:00:00.000 21

(21 row(s) affected)

然而,实际上您的查询还应该检查假期。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用工作日和日历日更新表格 的相关文章

  • SQL:是否可以根据“like”函数的结果进行“分组”?

    我正在使用 Oracle SQL 我想对一些 喜欢 函数结果的不同行进行分组 用一个例子来详细说明 假设我有一个表 MESA 其中一列是一个巨大的字符串 我正在计算与特定模式匹配的行数 SELECT m str count FROM MES
  • 如何优化查询以计算行相关的日期时间关系?

    假设我有一个简化的模型 其中patient可以有零个或多个events 一个事件有一个category and a date 我想支持以下问题 Find all patients that were given a medication a
  • SQL Server 链接服务器性能

    我正在使用 SQL Server 2008 Enterprise 我正在使用链接服务器技术从另一台服务器链接另一个 SQL Server 2008 Enterprise 实例 我编写 TSQL 来操作两个服务器实例中的对象 例如表 我的问题
  • “无法在查询内执行DML操作”的解决方案?

    我正在使用数据分析工具 我的要求是接受用户的值 将其作为参数传递并将其存储在表中 非常简单 所以我坐下来写这篇文章 create or replace procedure complex datainput in VARCHAR2 is b
  • 如何对数据库架构进行版本控制?

    是否有办法 廉价或 FLOSS 对 SQL Server 2008 DB 架构进行版本控制 这是杰夫 阿特伍德 Jeff Atwood 写的一篇不错的文章数据库版本控制 http www codinghorror com blog 2006
  • Zend DB Select 具有多个表联接

    尝试使用复制以下查询Zend Db Select 有什么指点吗 SELECT compounds id as compounds id reactions id as reactions id reaction compound numbe
  • 错误:索引表达式中的函数必须在 Postgres 中标记为 IMMUTABLE

    我想创建多列表达式索引 但是当我创建索引时 输出以下消息 detail message wapgrowth gt create index CONCURRENTLY idx test on tmp table using btree sky
  • 如何避免sql死锁?

    我正在使用 MS SQL 2008 并在 Web 项目中使用 C 进行编码 目前 我遇到了 sql 死锁问题 我有两笔交易 其中两笔是长交易 当两个事务同时运行时 就会发生死锁 短事务会被自动选择杀死 我当前的解决方案 我正在捕获死锁异常并
  • 如果子查询包含 NULL,带有“IN”子查询的 SQL select 不会返回任何记录

    我遇到了这个有趣的行为 我认为左连接是可行的方法 但仍然希望解决这个问题 这是错误还是设计行为 有什么解释吗 当我从左表中选择记录时 右表的子查询结果中不存在值 如果子查询结果有空值 则不会返回预期的 缺失 记录 我希望编写此查询的两种方法
  • 无法更改 SSIS Excel 目标列数据类型

    我有一个 SSIS 包 它从 SQL Server 导入数据并将其放入 Excel 目标文件中 当进入 ADO 源组件的高级编辑器时 我有一个字段Description其外部数据类型为Unicode String 长度 4000 输出数据类
  • 如何将一组行从一个函数传递到另一个函数?

    Overview 我正在使用 PostgreSQL 9 1 14 并且我试图将一个函数的结果传递到另一个函数中 总体思路 具体细节 下面是一个最小的例子 是我们可以写 select from select from foo 我们可以将子选择
  • SQL:使用 1 个查询更新一行并返回列值

    我需要更新表中的一行 并从中获取列值 我可以这样做 UPDATE Items SET Clicks Clicks 1 WHERE Id Id SELECT Name FROM Items WHERE Id Id 这会生成 2 个对该表的计划
  • 所有排序规则下包含相同长度整数的字符串的数字排序顺序

    是否可以安全地假设 SQL Server 中的所有排序规则都会对包含相同长度整数的字符串给出 预期 即数字 排序顺序 例如 假设 text仅包含非负整数 0 9 以下代码片段是否可以确保该值不会溢出int范围 或者可能有一些排序规则 tex
  • 如何将此查询编写为完整联接而不是联合左/右联接?

    这是代码 显示输入和所需的输出 基本上 我正在尝试自我加入 以将经纪人声明的结果与我的内部记录相匹配 所以左边的列是经纪人的列表 右边是我的列表 如果经纪人有仓位 而我没有 则右侧为 NULL 如果我有仓位而经纪商没有 则左侧为 NULL
  • 使用工作日和日历日更新表格

    我在 SQL Server 2012 中有一个表 每月手动更新一次 以反映文件预计进入的日期 日期规则已经有值 但预期日期列是手动更新的 如果预计在 BD1 第 1 个工作日 我将更新到该月的第一个非周末 如果预计在 CD1 日历日 1 我
  • 与选择顶部相反

    Transact SQL 有一个方便的SELECT TOP 4 whatever FROM 我想做一个 SELECT 查询 返回表中的最后 n 个条目 而不是第一个条目 这是我用来返回在表中输入的前四个项目的查询 使用 SELECT TOP
  • 如何在 SQL Bigquery 中计算另一个事件之前特定事件的数量?

    我有一个包含日期 事件和用户的表 有一个名为 A 的事件 我想找出 Sql Bigquery 中事件 A 之前和之后特定事件发生的次数 例如 User Date Events 123 2018 02 13 X Y A 123 2018 02
  • 在 Oracle 中将 varchar 拆分为单独的列

    我有点困惑 我被要求接受以数据库中的特定字符串开头的注释 并将结果分成单独的列 例如 如果返回值是这样的 COLUMN ONE D7ERROR username 回报必须是 COL ONE COL TWO D7ERROR username
  • 具有 BETWEEN 时间戳的 SQL 查询出现意外结果

    我创建了一个小测试应用程序来追踪我在 Heroku 上使用 Postgres 时遇到的问题 http snippi com s xd511rf http snippi com s xd511rf 正如你在队列中看到的49 我想检索所有创建的
  • SSIS:无法创建 OLE DB 访问器。验证列元数据是否有效

    我有一个 SSIS 包 在 OLEDB 目标中具有 NVARCHAR MAX 字段 该字段甚至没有被数据流填充 数据流任务失败并出现错误 无法创建 OLE DB 访问器 请验证列元数据是否有效 我看到了这个类似的问题 如何修复 SSIS 中

随机推荐

  • 使用 FileDialog 打开工作簿并在 Excel VBA 中对其进行操作

    我正在学习如何使用 Excel 宏 我发现了这段代码 Dim fd As Office FileDialog Set fd Application FileDialog msoFileDialogFilePicker With fd All
  • 使用 swift 3.0 编译的模块无法在 Swift 3.0.1 中导入

    我将 Xcode 升级到 8 1 GM 现在收到以下 SwiftyJSON 错误 其他导入的框架似乎也有效 有没有办法强制它在 Swift 3 中工作 直到 SwiftyJSON 升级他们的框架 我使用 Carthage 导入 更新框架 我
  • 应用内购买仍在等待审核

    当我们开发新版本的应用程序时 我们提交了一些应用内购买的新版本 这些内容与旧版本相同 但属于消耗品 因此您可以多次购买 并且还支持折扣 它们被返回的原因是 请与二进制文件一起提交 因此 我们在上传新应用程序版本的二进制文件后再次提交了它们
  • jQuery 可以根据高度选择 div 吗?还是教程错了?

    我正在尝试选择一个div基于其高度 如本教程所示 jQuery 选择 http tutorials jenkov com jquery selection html 我无法让它工作 jsbin 示例 http jsbin com eriqi
  • 向量到元素之间差异矩阵

    给定一个向量 vec lt 1 5 创建矩阵的有效方法是什么 其中向量分量之间的差异显示在矩阵 差异矩阵 中 如果您愿意的话 显然 我可以使用两个 for 循环来完成此操作 但我需要使用更大的数据集来完成此操作 我试图为这个矩阵创建一个术语
  • 列出 AD 用户的组成员身份

    使用以下 Powershell 代码片段 我获取当前用户的组成员身份的名称 groups System Security Principal WindowsIdentity GetCurrent Groups foreach i in gr
  • 当字符串值包含逗号时,JSON.parse 在 Safari 中失败

    我正在构建一个购物车 当按下 购买 按钮时 Web 服务会返回一个 JSON 输出 然后我将其作为字符串保存到 Javascript cookie 中 Web 服务的典型返回可能是 d 58658 id 58658 qty 1 single
  • 在Python中根据等级和花色对一手牌进行排序

    我正打算制作一款纸牌游戏 目前我正在着手开发它 我感到困惑的是 按牌的等级对手中的牌进行排序 然后按花色排序 以及如何减少重复 目前 我可能可以创建一个 for 循环来组织卡片 然后为每种可能性设置 52 个不同的 if 但我想知道它们是否
  • 当叠加两个相同大小的图像时,其中一个会偏移

    我正在尝试通过将一个图像叠加在另一个图像上来创建图像 该代码有效 但我叠加的图像似乎略有拉伸 我不知道为什么 所以代码只是创建一个空白的红色 24x24 矩形 然后我覆盖一个 24x24 png 文件 如下所示 我期待的是这样的 但我实际上
  • dte.Solution.SolutionBuild.StartupProjects 更改时是否会触发事件?

    我正在构建一个 Visual Studio 2010 插件供我公司内部使用 我想自定义主窗口标题以显示当前启动项目的名称 我可以使用以下代码设置主窗口的标题 DTE d GlobalClass dte2 as DTE IntPtr hWnd
  • WPF ICollectionView 过滤

    我写了一个代码过滤项目在组合框中 我的问题是 你会怎么做 我认为这种带有反射的解决方案可能非常有效slow ICollectionView view CollectionViewSource GetDefaultView newValue
  • 如何将此查询编写为完整联接而不是联合左/右联接?

    这是代码 显示输入和所需的输出 基本上 我正在尝试自我加入 以将经纪人声明的结果与我的内部记录相匹配 所以左边的列是经纪人的列表 右边是我的列表 如果经纪人有仓位 而我没有 则右侧为 NULL 如果我有仓位而经纪商没有 则左侧为 NULL
  • 如何在知道其十进制值的情况下找出菜单中项目的字符串 ID?

    我正在使用 android support v7 appcompat 在一个活动中 我想在操作栏中显示后退按钮 我愿意 public class News extends ActionBarActivity Override protect
  • 无法在 BeautifulSoup 中获得正确的链接

    我正在尝试解析一些 HTML 并且想提取与特定模式匹配的链接 我正在使用find使用正则表达式的方法 但它没有给我正确的链接 这是我的片段 有人可以告诉我我做错了什么吗 from BeautifulSoup import Beautiful
  • 使用 Kotlin 在 Android 中渲染 PDF

    我已经在使用 Java 的 PDF 上看到了该线程 但找不到任何有关如何使用 Kotlin 执行此操作的信息 有什么方法或者我需要使用Java吗 在 Android 上使用 Java 渲染 PDF 文件 https stackoverflo
  • 构建警告会影响 iOS 应用商店审批流程吗?

    当应用程序正在经历应用程序商店审批流程时 Apple 的人员会检查项目中的警告 还是只检查错误 例如我的很多 NIB 文件上都有这样的警告 不支持的配置 设置了标题但使用系统标识符 这些属性是互斥的 标题将被忽略 这会成为 Apple 拒绝
  • php 字符串与通配符 * 匹配?

    我想提供将字符串与通配符匹配的可能性 Example mystring dir folder1 file pattern dir file stringMatchWithWildcard mystring pattern gt Return
  • 命令行上出现“黄瓜:找不到命令”错误;不过“耙黄瓜”效果很好

    刚刚在我的系统上更新了我的黄瓜宝石 并且在运行我的标记黄瓜功能时遇到了问题 cucumber 命令不再在我的命令行上运行 bash 黄瓜 找不到命令 最初的想法是我的 PATH 没有在 bash login 中正确设置 不过 我认为这里一切
  • Dockerfile:如何根据ubuntu版本设置apt镜像

    在构建 docker 镜像时 可以通过覆盖来设置自定义 apt 镜像 etc apt sources list e g FROM ubuntu focal RUN echo deb mirror mirrors ubuntu com mir
  • 使用工作日和日历日更新表格

    我在 SQL Server 2012 中有一个表 每月手动更新一次 以反映文件预计进入的日期 日期规则已经有值 但预期日期列是手动更新的 如果预计在 BD1 第 1 个工作日 我将更新到该月的第一个非周末 如果预计在 CD1 日历日 1 我