Как я могу увеличить переменную внутри рекурсии CTE с SQL Server 2008

swordgit спросил: 14 ноября 2017 в 07:34 в: sql

У меня есть следующий код, который я хочу сделать рекурсию с CTE и увеличить переменную внутри, чтобы рекурсия могла использовать это для выполнения подзапроса.

WITH cte as
(
    select @layer as layers,
    case when exists(select * from #table where layer=@layer and string in ('abc','xyz)) then 10 else 0 end 
    union all
    select layers + 1, total
    from cte
    where layers + 1<4 -- 4 is a max number that is unknown and given by the user
)select * from cte

#table имеет следующую структуру, но объем данных является динамическим

string     layer
abc        1
xyz        1
abc        2
xyz        2

Так что на уровне 1, если он имеет "abc" или "xyz", он будет иметь точку 10 То же самое происходит для слоя 2, пока максимальный слой не будет задан пользователем. Я хочу получить точку и соответствующий уровень из рекурсии. Хотя цикл и курсор запрещены. У меня проблемы с увеличением @layer в рекурсии. Любое предложение? Благодаря


0 ответов