2017-10-07 85 views
2

我在我的表中的这些记录:SQL服务器列有2个或多个列排序进行排序

id sequence question answer letter 
    1  1  1 + 1  2  B 
    2  2  2 + 2  4  E 
    3  3  4 + 4  8  A 
    4  4  8 + 8  16  D 
    5  5  16 + 16  32  C 

是否有任何possibilites使我的表是这样的? :

id sequence question answer letter 
    1  1  1 + 1  8  A 
    2  2  2 + 2  2  B 
    3  3  4 + 4  32  C 
    4  4  8 + 8  16  D 
    5  5  16 + 16  4  E 

我的意思是,第一个是通过序列我命令,但我也想获得它的顺序字母,因为如果不是他们将在相同的位置,因此这个问题可以很容易回答,我希望答案与字母一起出现,并按字母顺序排列。请迫切需要你们的帮助:(

+0

你应该解释你要完成的任务。混合并匹配来自不同行的不同列通常没有意义。 –

+0

我的意思是我只是想让第一个到第二个,他们只在一个表格im卡住了这:( – godscrub

回答

3

--DDL

CREATE TABLE test(id int,sequence int,question varchar(20),answer int, letter varchar(5)); 

    INSERT INTO test VALUES(1,1,'1+1',2,'B'); 
    INSERT INTO test VALUES(2,2,'2+2',4,'E'); 
    INSERT INTO test VALUES(3,3,'4+4',8,'A'); 
    INSERT INTO test VALUES(4,4,'8+8',16,'D'); 
    INSERT INTO test VALUES(5,5,'16+16',32,'C'); 

--sql

SELECT A.id, 
      A.sequence, 
      A.question, 
      B.answer, 
      B.letter 
     FROM 
    (
    SELECT id, 
      sequence, 
      question, 
      ROW_NUMBER() OVER (ORDER BY id) AS rn 
     FROM test 
    ) A 
    INNER JOIN 
    (
    SELECT answer, 
      letter, 
      ROW_NUMBER() OVER (ORDER BY letter) AS rn 
     FROM test 
    ) B 
    ON A.rn = B.rn; 

SQL小提琴: - http://sqlfiddle.com/#!6/96e09/3