如何查询SQL Server中最新岛的大小?

时间:2019-05-30 18:53:43

标签: sql sql-server gaps-and-islands

我想查询SQL Server(Azure)中“间隙和孤岛”问题中最后一个孤岛的大小。

说我有下表:

ID date status
500 2019-05-15 1 
528 2019-05-16 0 
538 2019-05-17 0 
550 2019-05-18 1 
580 2019-05-19 0 
590 2019-05-20 0 

ID是一个身份列 日期是日期列 状态为0或1。

我想知道状态已设置为0天。在这种情况下,今天是2019-05-20。

如何编写查询以将最后一个状态列的计数拉为0(即2)?

2 个答案:

答案 0 :(得分:1)

您可以使用webscraping查找最新记录,并使用它来计算status = 1的最近记录。

status = 0

答案 1 :(得分:0)

假设您要对行进行计数(而不是使用日期算术),那么一种安全的方法是:

select count(*) as cnt
from t
where [date] > all (select [date] from t where status = 1);

即使没有1,这也应该起作用。