0

我想使用新的选择函数在递归 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    

如何使用“选择”功能做到这一点?

4

1 回答 1

0

CHOOSE被记录为返回 NULL:

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

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

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

(我最初有一个 -1 from ID,但鉴于该语句是在ID值来自前一行的上下文中执行的,因此已经处理了)

于 2011-09-01T06:32:08.290 回答