gpt4 book ai didi

SQL Server - 计算数据集中属性更改的次数(非并发)

转载 作者:行者123 更新时间:2023-12-03 02:34:23 26 4
gpt4 key购买 nike

我有一个查询,根据给定日期是否发生事件返回 1 或 0。这是按日期排序的。基本上,一个简单的结果集是:

Date         |  Type
---------------------
2010-09-27 1
2010-10-11 1
2010-11-29 0
2010-12-06 0
2010-12-13 1
2010-12-15 0
2010-12-17 0
2011-01-03 1
2011-01-04 0

我现在想要做的是计算“0”的单独、非并发实例的数量 - 即计算出现了多少个不同的 0 组。

在上面的例子中,答案应该是 3(一组 2 个,然后另一组 2 个,最后以 1 结束)。

希望上面的例子能够说明我想要表达的意思。我已经搜索了一段时间,但发现很难简洁地描述我正在寻找的内容,因此没有找到任何相关的内容。

提前致谢,

乔什

最佳答案

您可以在 CTE 中为每一行指定一个数字。然后您可以将表自身连接起来以查找上一行。知道了上一行,就可以将上一行为1和当前行为0的次数相加。例如:

; with NumberedRows as
(
select row_number() over (order by date) as rn
, type
from YourTable
)
select sum(case when cur.type = 0 and IsNull(prev.type,1) = 1 then 1 end)
from NumberedRows cur
left join
NumberedRows prev
on cur.rn = prev.rn + 1

关于SQL Server - 计算数据集中属性更改的次数(非并发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com