Как запросить размер самого нового острова в SQL Server? - PullRequest
1 голос
/ 30 мая 2019

Я хотел бы запросить размер последнего острова в проблеме «пробелов и островков» в 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 ]

1 голос
/ 30 мая 2019

Вы можете найти самую последнюю запись с помощью status = 1 и использовать ее для подсчета последних строк с помощью status = 0.

select
    count(*) as cnt
from yourTable
where [date] > (select max([date]) from yourTable where [status] = 1)
0 голосов
/ 31 мая 2019

Если вы хотите посчитать строки (а не использовать арифметику даты), тогда безопасный метод:

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

Это должно работать, даже если нет 1 s.

...