日期:2014-05-18  浏览次数:20555 次

sql如何依照某一字段分配问题
我使用的SQLServer 2005 其中有两张表 Users 和 Papers ,其中Paper中有PaperID,PaperName和A_B(代表A,B卷)现在想

实现试卷A,B卷,按照Users表中的字段UserID来随机分配,或者依据UserID来交替分配,生产一张新的表Test(UserID,UserName,PaperName,A_B).

该如何做呢?求大神指导

------解决方案--------------------
SQL code


CREATE TABLE Users
(
    UserID INT,
    UserName VARCHAR(100)
)
GO

CREATE TABLE Papers
(
    PaperID INT,
    PaperName VARCHAR(100),
    A_B VARCHAR(10)
)
GO
INSERT INTO Users
SELECT 1,'张三' UNION
SELECT 2,'李三' UNION
SELECT 3,'王三' UNION
SELECT 4,'宋三' 

INSERT INTO Papers
SELECT 1,'数学','A' UNION
SELECT 2,'数学','B' UNION
SELECT 3,'语文','A' UNION
SELECT 4,'语文','B' 


WITH t AS
(SELECT RN=ROW_NUMBER() OVER (ORDER BY userid),UserId,UserName
FROM Users)

SELECT UserId,UserName,PaperName,A_B
FROM t INNER JOIN Papers AS B ON CASE t.RN%2 WHEN 1 THEN 'A'
                                             WHEN 0 THEN 'B' END = B.A_B
ORDER BY PaperName

UserId    UserName    PaperName    A_B
1    张三    数学    A
2    李三    数学    B
3    王三    数学    A
4    宋三    数学    B
4    宋三    语文    B
3    王三    语文    A
2    李三    语文    B
1    张三    语文    A