0

@NoofRept int を宣言する

id=1 の tbl_Name から id,Name を選択

id  |Name
1   |XXXXXXX

私の要件これはこのレコードを繰り返します @NoofRept Time

id  |Name
1   |XXXXXXX
1   |XXXXXXX
1   |XXXXXXX
1   |XXXXXXX
4

2 に答える 2

0

最大 2047 未満のレコードを繰り返したい場合は、 table を使用できますMaster..spt_values。これはシステム テーブルであり、タイプ P には 0 から 2047 までの連番があります。

DECLARE @NoofRept INT = 10

SELECT  t.ID, t.Name
FROM    tbl_Name t
        CROSS JOIN Master..spt_Values v
WHERE   t.ID = 1
AND     v.Type = 'P'
AND     v.Number BETWEEN 1 AND @NoofRept

SQL Fiddle の例

これ以上必要な場合は、必要CROSS JOINな行数を取得するためにテーブルが必要になります。

SELECT  ID, Name
FROM    tbl_Name
        CROSS JOIN 
        (   SELECT  rpt = ROW_NUMBER() OVER(ORDER BY a.Number)
            FROM    Master..spt_Values a
                    CROSS JOIN Master..spt_Values b
                    --CROSS JOIN Master..spt_values c
                    --CROSS JOIN Master..spt_values d
        ) v
WHERE   ID = 1
AND     v.rpt BETWEEN 1 AND @NoofRept

必要に応じて結合のコメントを外します

SQL Fiddle の例

于 2013-03-08T12:52:09.870 に答える
0

テストされていない疑似コードですが、次のようなものがうまくいくかもしれません:

DECLARE @sql nvarchar(max);
DELCARE @i int; 
SET @i = 1;

SET @sql = 'select id,Name from tbl_Name where id=1'

WHILE @i < @NoofRept
BEGIN
  SET @sql = @sql + 'UNION select id,Name from tbl_Name where id=1'

  SET @i = @i + 1;
END

EXEC sp_executesql @sql;
于 2013-03-08T12:53:29.233 に答える