Пожалуйста, вы можете помочь мне решить проблему, которая, как мне кажется, связана с проблемой пробелов и островков в T-SQL. Я использую SQL Server 2014.
Я пытаюсь подсчитать количество последовательных вхождений комбинации таблица / индекс, используя столбец даты, чтобы различать разорванные цепочки.
См. Ниже T-SQL, чтобы продемонстрировать, чего я пытаюсь достичь, в частности, как рассчитать столбец Rnk, который для демонстрационных целей я жестко запрограммировал вручную?
CREATE TABLE #test (RowID INT IDENTITY(1,1), FileDate DATE, TableName VARCHAR(100), IndexName VARCHAR(100), Rnk INT)
INSERT INTO #test (FileDate, TableName, IndexName, Rnk)
VALUES
('2015-10-31', 't1', 'idx1', 1),
('2015-10-30', 't1', 'idx1', 2),
('2015-10-27', 't1', 'idx1', 1),
('2015-10-26', 't1', 'idx1', 2),
('2015-10-25', 't1', 'idx1', 3),
('2015-10-23', 't1', 'idx1', 1),
('2015-10-22', 't1', 'idx1', 2),
('2015-10-21', 't1', 'idx1', 3),
('2015-10-20', 't1', 'idx1', 4),
('2015-10-19', 't1', 'idx1', 5),
('2015-10-15', 't1', 'idx1', 1),
('2015-10-13', 't1', 'idx1', 1),
('2015-10-10', 't1', 'idx1', 1),
('2015-10-09', 't1', 'idx1', 2),
('2015-10-27', 't3', 'idx13', 1),
('2015-10-26', 't3', 'idx13', 2),
('2015-10-25', 't3', 'idx15', 1),
('2015-10-24', 't3', 'idx15', 2),
('2015-10-21', 't3', 'idx13', 1)
SELECT * FROM #test
DROP TABLE #test
На скриншоте, который я прикрепил, выделенная часть результатов показала бы, что я хочу, чтобы столбец Rnk располагал последовательность последовательного появления t1 / idx между 2015-10-27 - 2015-10-25, но сбросил число для следующее появление в 2015-10-23 до 2015-10-19.
Может кто-нибудь помочь мне, пожалуйста?
Спасибо.