gpt4 book ai didi

sql - 使用SQL计算连续重复字段

转载 作者:行者123 更新时间:2023-12-03 01:51:07 24 4
gpt4 key购买 nike

我在 myTable 中有此数据:

  Date           Status    PersonID
-----------------------------------------
2018/01/01 2 2015 ┐ 2
2018/01/02 2 2015 ┘
2018/01/05 2 2015 ┐
2018/01/06 2 2015 3
2018/01/07 2 2015 ┘
2018/01/11 2 2015 - 1
2018/01/01 2 1018 - 1
2018/01/03 2 1018 - 1
2018/01/05 2 1018 ┐ 2
2018/01/06 2 1018 ┘
2018/01/08 2 1018 ┐ 2
2018/01/09 2 1018 ┘
2018/01/03 2 1625 ┐
2018/01/04 2 1625 4
2018/01/05 2 1625
2018/01/06 2 1625 ┘
2018/01/17 2 1625 - 1
2018/01/29 2 1625 - 1
-----------------------------------

我需要计算连续的重复值,如下所示:

这是我需要的结果:

   count    personid
-----------------
2 2015
3 2015
1 2015
1 1018
1 1018
2 1018
2 1018
4 1625
1 1625
1 1625

我正在使用 SQL Server 2016 - 请帮助

最佳答案

这是一个“间隙和岛屿”问题,您可以尝试如下操作。

;with cte 
as (select *,
dateadd(day, -row_number()
over (partition by status, personid
order by [date] ), [date]) AS grp
FROM @table
)
,cte1
AS (select *,row_number() over(partition by personid, grp,status order by [date]) rn,
count(*) over(partition by personid, grp) ct
from cte
)

select ct as count, personid
from cte1
where rn=1

Online Demo

注意:您可能无法以相同的顺序获得行,因为您没有任何列可用于按照您在所需输出中显示的方式进行排序。

关于sql - 使用SQL计算连续重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55234313/

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