Сценарий: у меня есть таблица со столбцами Year
и Gap
.Что мне нужно, так как начиная с заданного значения года оно увеличивается до значения в столбце разрыва.
, т. Е. Если YearVal
равно 2001, а Gap
равно 3, мне нужновыведите как
Result
--------
2001
2002
2003
Что я пробовал:
DECLARE @ResultYears TABLE (Gap INT, YearVal INT);
INSERT INTO @ResultYears (Gap, YearVal) VALUES (3, 2001);
;WITH FinalResult AS (
SELECT YearVal AS [YR] FROM @ResultYears
UNION ALL
SELECT [YR] + 1 FROM FinalResult
WHERE [YR] + 1 <= (SELECT YearVal + (Gap -1) FROM @ResultYears)
)
SELECT * FROM FinalResult;
db <> fiddle demo с одной записью в таблице.
Использованиезапрос выше, я могу достичь ожидаемого результата.Но если в таблице более одной записи, запрос не работает.
т.е. если у меня есть записи в таблице, как показано ниже:
DECLARE @ResultYears TABLE (Gap INT, YearVal INT);
INSERT INTO @ResultYears (Gap, YearVal) VALUES
(3, 2001), (4, 2008), (1, 2014), (2, 2018);
Как я могу изменить запросдостичь ожидаемого результата?
db <> fiddle demo с более чем одной записью в таблице.