Как использовать CTE, чтобы сделать рекурсивный для предыдущего ряда?

У меня есть проблема, которую, я считаю, можно решить с помощью CTE.

Я создаю SQL-запрос, показанный ниже:

with CTE as
(
SELECT Distinct T.testType as name,'tmpRequirement_TestType_Canvas' as template,'n/a' as layout,
0 as x,0 as y,'855' as width,'42' as height,
T.id,T.testType FROM [dbo].[tProperty] P
INNER JOIN tTest_Type T 
on P.tTest_Type_id = T.id)

select * from CTE

Я получил результаты, как показано ниже:

То, что я хотел бы получить, показано ниже:

По сути, я хотел бы, чтобы значение y увеличивалось на 50 для каждой строки. Есть ли способ для этого?

Заранее спасибо.

2 ответа

Вам нужно заказать, но row_number() сделаем это:

select . . .,
       50 * row_number() over (order by ?) as y
from cte;

? для столбца, который определяет порядок.

Как ваш образец сверху:

Это начнется с 0 и добавить 50:

select setNumber from 
(select setNumber from
(select 50 * ROW_NUMBER() over(order by id) as setNumber from yourTableOrCTE) as a
union all
select 0) as a order by setNumber
Другие вопросы по тегам