Sql 如何使用CTE对前一行进行递归?

Sql 如何使用CTE对前一行进行递归?,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,我有一个问题,我相信可以用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_T

我有一个问题,我相信可以用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。有什么办法吗


提前感谢。

您需要订购,但
行号()
将执行以下操作:

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

我们需要一个
订单
向每条记录添加50条。您可以将
id
更改为您自己的字段。