无法使用Choose(Denali)和递归CTE生成记录

时间:2011-09-01 06:15:00

标签: sql sql-server sql-server-2012

我想使用新的选择函数

在递归CTE中生成一些记录
    ;With Cte As
(
    Select 
        Id=1
        To = Cast ('India' as varchar(10))
    Union All
    Select 
        Id +1 
        ,To= Cast( Choose(ID,'India','Belgium') as varchar(10))     
    From Cte 
    Where Id < 10    
)

Select * from Cte

预期输出

Id  PlayerName                  BelongTo
1   Player1                     India
2   Player2                     Belgium    

如何使用“选择”功能执行此操作?

1 个答案:

答案 0 :(得分:0)

记录

CHOOSE返回NULL:

  

如果索引值超出值数组的范围

所以你需要执行模运算。 SQL中的模运算符是%,因此它将是:

Cast( Choose(((ID%4)+1),'India','Australia','England','Belgium') as varchar(100))

(我最初从ID获得了-1,但是假设这个语句是在ID值来自上一行的情况下执行的,那已经处理过了)