T-SQL-计算rota模式
我正在使用SQL 2012。 我有一个填充了人员数据的数据库表。每个人都有一个开始日期(T-SQL-计算rota模式,sql,sql-server,sql-server-2012,sequence,Sql,Sql Server,Sql Server 2012,Sequence,我正在使用SQL 2012。 我有一个填充了人员数据的数据库表。每个人都有一个开始日期(1/1/1990,24/11/2004,3/4/2018等) 每个人都有一个固定长度的轮换表,从他们各自的开始日期开始 模式根据其长度滚动,例如在再次发生前7、14、21天,并受合同长度的约束 字段: 如果您的合同长度为“4”,并且在第2天您完全可用,则数据库会将您的合同显示为第0天开始结束、第1天开始结束、第3天开始结束,因为数据库记录数据的方式只会告诉您何时不可用,您必须推断您可用 我们希望创建一个脚本
1/1/1990
,24/11/2004
,3/4/2018
等)
每个人都有一个固定长度的轮换表,从他们各自的开始日期开始
模式根据其长度滚动,例如在再次发生前7、14、21天,并受合同长度的约束
字段:
如果您的合同长度为“4”,并且在第2天您完全可用,则数据库会将您的合同显示为第0天开始结束、第1天开始结束、第3天开始结束,因为数据库记录数据的方式只会告诉您何时不可用,您必须推断您可用
我们希望创建一个脚本,以便根据某人的开始日期和模式,我们可以确定他们在[用户定义日期]的rota的哪一天。请添加一个表示所需输出的表格好吗?你的解释并不完全清楚你在这里想要什么。DATEDIFF(day,[Start Date],@UserDefinedDate)%[Length of Pattern]+1--会给你第1,2,3,4天。。。。。。图案长度(%)是mod,或模算术值,因此,它将随着与开始日期的天数差的增加而循环取整。您需要将ContractDaysRange字段拆分为ContractDaysMin和ContractDaysMax的两列。@iamdave所需的输出是一个附加列,用于确定自当前日期起个人当前在rota模式的哪一天。@pseuronym您这么说很好,但对于我们这些不熟悉您的环境和数据源的人来说,向我们提供原始数据表(我认为您问题中的图片不是您的实际源表)和我们可以检查解决方案的精确输出非常有帮助。这样做会使这里的志愿者更愿意花时间帮助你。