从一个表中取20个随机行,并将它们作为列插入另一个表(单行)中

时间:2013-04-23 07:45:38

标签: sql sql-server stored-procedures

您好我正在使用SQL Server 2012,我有一个包含1000个问题的表作为行。我需要随机选择其中的20个问题,然后将它们作为单独的列插入到另一个表中的一行中。

我想做这样的事情。

select top 20 questionid from questions order by newid()
insert into questionsets values (q1,q2,q3,q4,q5,q6....)

我尝试过各种各样的方法,但是我很难以一种不昂贵的方式解决这个问题。

1 个答案:

答案 0 :(得分:2)

请在PIVOT结果集后尝试插入:

INSERT INTO 
    questionsets    (
    Q1,
    Q2,
    .
    .
    Q20)
SELECT * FROM(
    SELECT *, ROW_NUMBER() OVER (ORDER BY questionid) RNum FROM(
        SELECT TOP 20 questionid FROM questions ORDER BY NEWID()
)x)y PIVOT (MAX(questionid) FOR RNum IN ([1], [2], [3], ..., [20]))as pvt