2
ALTER PROC [dbo].[Usp_SelectQuestion]
   @NoOfQuestion int
AS
BEGIN
  Declare @CNT int
  Declare @test int
  Declare @x int
  Declare @y int

  set @x = 1;
  set @y = 1; 
  set @CNT=(Select Count(*) from (select Distinct(setno)from onlin) AS A)
  set @test=@NoOfQuestion/@CNT

  while (@x <= @CNT)  
  begin
    select top (@test) * from onlin where setno = @x order by NEWID()
      set @x = @x + 1
  end
END

このストアドプロシージャでは、ループごとに単一のテーブルとして出力を取得しているため、出力として複数のテーブルを取得していますが、単一のテーブルにすべての行が必要です。ユニオンを通じて達成できると思いますが、使用方法がわかりません。

4

3 に答える 3

1

これを使って:

CREATE TEMPORARY TABLE tmp SELECT * FROM tableName;

次にテーブルに挿入します

INSERT INTO tableName SELECT * FROM tmp;
于 2012-12-20T09:34:26.853 に答える
0
declare @temptable as table(col1 int, col2 varchar(50),... etc)

  while (@x <= @CNT)  
  begin
     insert into @temptable   'temptable columns need to match columns in the SELECT statement
        select top (@test) * from onlin where setno = @x order by NEWID()

     set @x = @x + 1
  end

  select * from @temptable
于 2012-12-20T09:34:08.437 に答える
0

a を作成temp tableし、ループ内に挿入すると、結果は次のようになります。

SELECT * FROM tempTable
于 2012-12-20T09:05:10.713 に答える