Создана табличная функция, в которой я использовал Recursive cte для оценки повторяющихся значений заданных в пут. Затем соединяем таблицу с функцией с помощью Cross Apply
CREATE FUNCTION [dbo].[udf_GetData] (
@Data INT
)
RETURNS @output TABLE (
Data INT
)
BEGIN
;WITH CTe
AS
(
SELECT 1 As Data
UNION ALL
SELECT Data+1
FROM CTe
WHERE Data < @Data
)
INSERT INTO @output
SELECT Data FROM CTe
RETURN
END
Пример данных и объяснение, как вызвать функцию с помощью CROSS APPLY
DECLARE @Data AS TABLE (A VARCHAR(10),B INT)
INSERT INTO @Data
SELECT 'c1', 2 UNION ALL
SELECT 'c2', 3 UNION ALL
SELECT 'c3', 4
SELECT d.A,
(SELECT [dbo].[udf_GetData](d.B)) AS RecData
FROM @Data d
Результат
A RecursiveData
----------------
c1 1
c1 2
c2 1
c2 2
c2 3
c3 1
c3 2
c3 3
c3 4