0

新しい choose 関数を使用して、再帰 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 がありましたが、このステートメントが前の行IDの値であるコンテキストで実行されていることを考えると、それは既に処理されています)ID

于 2011-09-01T06:32:08.290 に答える