Это не может быть сделано особенно легко proc sql
с использованием встроенных функций. Одним из решений является, если у вас есть какой-то счет или таблица чисел. Тогда вы можете просто сделать:
select id, t.name, n.n
from t join
numbers n
on n.n <= :counter;
На самом деле, если ваши идентификаторы последовательны без пробелов (как в вашем примере), вы можете использовать самостоятельное соединение:
select t.id, t.name, n.id as count
from t join
t n
on n.id <= :counter;
Если вы знаете значение c, вы можете создать запрос union all
:
select id, name, 1 as count from t
union all
select id, name, 2 as count from t
union all
select id, name, 3 as count from t;
Современный SQL теперь имеет конструкции, которые упрощают этот процесс (например, оконные функции и рекурсивные CTE). Тем не менее, они не доступны непосредственно в proc sql
.