二进制运算符或在TSQL中?

扎科霍

我想要实现的是在某种时间轴上对发生的事件进行计数,将重叠事件视为单个事件,从这样的字段开始并使用TSQL:

Pattern  (JSON array of couple of values indicating 
the start day and the duration of the event)
----------------------------------------------------
[[0,22],[0,24],[18,10],[30,3]]      
----------------------------------------------------

对于此示例,预期结果应为30

我需要的是一个TSQL函数来获取此号码...

即使我不确定这是正确的路径,我仍在尝试在数据集的行之间模拟某种BINARY OR。经过一番尝试后,我设法将我的数据集变成了这样的东西:

start  | length | pattern
----------------------------------------------------
0      | 22     | 1111111111111111111111
0      | 24     | 111111111111111111111111
18     | 10     | 000000000000000001111111111
30     | 3      | 000000000000000000000000000000111
----------------------------------------------------

但是现在我不知道如何在TSQL中进行=)一种解决方案,因为我说过可以在“模式”字段之间进行二进制或以获取类似信息:

1111111111111111111111...........
111111111111111111111111.........
000000000000000001111111111......
000000000000000000000000000000111
--------------------------------------
111111111111111111111111111000111

是否可以在TSQL中做到这一点?

也许我只是在这里使事情复杂化,您还有其他想法吗?

不要忘记我只需要结果编号!!!

谢谢你们

伊亚达夫

根据您输入的日期,您应该可以执行以下操作来计算发生事件的天数。

所述cte用于产生的日期,其中由两个日期变量定义的开始和结束的一个表。这些将最适合作为源数据驱动的数据。如果必须使用带编号的日期值,则可以简单地返回递增的数字而不是递增的日期:

declare @Events table (StartDate    date
                        ,DaysLength int
                        )
insert into @Events values
 ('20160801',22)
,('20160801',24)
,('20160818',10)
,('20160830',3)

declare @StartDate date = getdate()-30
        ,@EndDate date = getdate()+30

;with Dates As  
(  
select DATEADD(day,1,@StartDate) as Dates
union all
select DATEADD(day,1, Dates)
from Dates
where Dates < @EndDate
)
select count(distinct d.Dates) as EventingDays
from Dates d
    inner join @Events e
        on(d.Dates between e.StartDate and dateadd(d,e.DaysLength-1,e.StartDate)
            )
option(maxrecursion 0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制运算符或在TSQL中?

来自分类Dev

为二进制树重载++运算符

来自分类Dev

-bash:[:@:预期为二进制运算符

来自分类Dev

二进制运算符的非数字参数

来自分类Dev

无效的二进制运算符

来自分类Dev

“二进制'[':找不到运算符

来自分类Dev

Bash二进制运算符的用法

来自分类Dev

+二进制类型的运算符

来自分类Dev

利用二进制运算符登录变量

来自分类Dev

-bash:[:@:预期为二进制运算符

来自分类Dev

在二进制运算符周围插入空格

来自分类Dev

“二进制'[':找不到运算符

来自分类Dev

获取二进制%运算符迭代次数

来自分类Dev

二进制NOT(〜)运算符如何工作?

来自分类Dev

逻辑二进制中缀运算符出错

来自分类Dev

Python中二进制数的二进制运算符

来自分类Dev

shell脚本中应有条件的二进制运算符

来自分类Dev

python中是否有适用于数组的二进制或运算符?

来自分类Dev

Numpy中没有结构化数组的二进制运算符?

来自分类Dev

二进制关系运算符中左右操作数的学名是什么?

来自分类Dev

getReturns中的“二进制运算符的非数字参数”错误

来自分类Dev

C ++中具有不同数据类型的二进制运算符重载

来自分类Dev

子集数据表中的二进制运算符问题

来自分类Dev

如何在R中不覆盖而使用二进制运算符

来自分类Dev

C#二进制运算符重载中的泛型

来自分类Dev

-0.01 * height中的错误:二进制运算符的非数字参数

来自分类Dev

R中的函数错误,二进制运算符的非数字参数

来自分类Dev

bash中是否有二进制安全的“三倍小于” <<<运算符?

来自分类Dev

仅针对二进制运算符防止隐式转换运算符

Related 相关文章

热门标签

归档