-6

ループを使わずに1から100までの数字を生成したい。どうすればそうできますか?

4

3 に答える 3

2

再帰的 CTE:

with nums as (
   select 1 as num
   union all
   select num+1 from nums where num < 100
)
select num from nums

さて、哲学的な問題は次のとおりです。あなたの割り当ては再帰をループと見なしますか?

于 2012-08-20T20:50:29.987 に答える
0

これは T-SQL で実行できます。これは、このブログ エントリの 2 番目のステートメントです。

http://trycatchfinally.net/2012/03/return-a-list-of-all-dates-between-a-start-and-end-date/

基本的に、システム テーブルの行を使用してから、RANK() OVER() を使用して、任意の範囲で番号を付けます。

DECLARE @Start INT,
        @End   INT

    SET @Start = 1
    SET @End   = 100

;WITH numberlist(number)
   AS (SELECT RANK() over(order by c1.object_id,
                                   c1.column_id,
                                   c2.object_id,
                                   c2.column_id)
         from sys.columns c1
        cross
         join sys.columns c2)
SELECT @Start + number - 1
  FROM numberlist
 WHERE @Start + number - 1 <= @End
于 2012-08-20T20:47:58.880 に答える
0

次のストアド プロシージャを作成して実行します。

DECLARE @sequence int
UPDATE YourTable SET sequence  = sequence  + 1, @sequence  = sequence  + 1
SELECT @sequence  AS ‘sequence’
于 2012-08-20T20:50:28.397 に答える