2017-10-07 42 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