加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

计算SQL Server中布尔值更改的次数

发布时间:2020-12-12 16:53:01 所属栏目:MsSql教程 来源:网络整理
导读:我有这个表: [SDate - DateTime] [Value] - Represents a boolean 2010-11-16 10:10:00 1 2010-11-16 10:11:00 0 2010-11-16 10:12:00 1 2010-11-16 10:13:00 1 我需要一个查询来计算值改变的次数. 例如: 2010-11-16 10:10:00 0 2010-11-16 10:11:00 1 2010
我有这个表:
[SDate - DateTime]                 [Value] - Represents a boolean
    2010-11-16 10:10:00                    1
    2010-11-16 10:11:00                    0
    2010-11-16 10:12:00                    1
    2010-11-16 10:13:00                    1

我需要一个查询来计算值改变的次数.

例如:

2010-11-16 10:10:00                    0
    2010-11-16 10:11:00                    1
    2010-11-16 10:12:00                    0
    2010-11-16 10:13:00                    0
    2010-11-16 10:14:00                    1
    2010-11-16 10:15:00                    0
    2010-11-16 10:16:00                    1
    ...
                                       5 changes
2010-11-16 10:10:00                    0
    2010-11-16 10:11:00                    0
    2010-11-16 10:12:00                    0
    2010-11-16 10:13:00                    1
    2010-11-16 10:14:00                    1
    2010-11-16 10:15:00                    1
    2010-11-16 10:16:00                    1
    ...                                       
                                        1 change

解决方法

你可以用lag():
select count(*)
from (select t.*,lag(value) order by (sdate) as prev_value
      from table t
     ) t
where prev_value <> value ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读