如下是我的存储过程, 想让它最终返回表TC的内容, 请高手御笔修改! set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[chaos]
AS
BEGIN
SELECT * INTO # FROM (
SELECT ID,num,question,choiceA FROM TB UNION ALL
SELECT ID,num,question,choiceB FROM TB UNION ALL
SELECT ID,num,question,choiceC FROM TB UNION ALL
SELECT ID,num,question,choiceD FROM TB
) A 
ORDER BY ID,NEWID()
SELECT *,SEQ=IDENTITY(INT,1,1) INTO #T  FROM #
TRUNCATE TABLE TC
INSERT TC(num,question,choiceA,choiceB,choiceC,choiceD,answer)
SELECT num,TC.question,choiceA,choiceB,choiceC,choiceD,
           CASE WHEN choiceA=choice THEN 'A' WHEN choiceB=choice THEN 'B' WHEN choiceC=choice THEN 'C' WHEN choiceD=choice THEN 'D'  END AS answer
FROM (SELECT ID,num,question,
    MAX(CASE WHEN SEQ=1 THEN choiceA END) AS choiceA,
    MAX(CASE WHEN SEQ=2 THEN choiceA END) AS choiceB,
    MAX(CASE WHEN SEQ=3 THEN choiceA END) AS choiceC,
    MAX(CASE WHEN SEQ=4 THEN choiceA END) AS choiceD
FROM (SELECT ID,num,question,choiceA,SEQ-(SELECT COUNT(*) FROM #T WHERE ID<A.ID) AS SEQ FROM #T  AS A) T
GROUP BY ID,num,question) AS TC 
JOIN
(SELECT ID,CASE ANSWER WHEN 'A' THEN choiceA WHEN 'B' THEN choiceB WHEN 'C' THEN choiceC WHEN 'D' THEN choiceD END AS choice
 FROM TB) AS TB
ON TC.ID=TB.ID
ORDER BY NEWID()
SELECT * FROM TC
DROP TABLE #
DROP TABLE #T
END