SQL Server 列排序,对 2 个或更多列进行排序

标签 sql sql-server

我的表中有这些记录:

 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

有没有可能让我的 table 看起来像这样? :

 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

我的意思是第一个是我按顺序排序的,但我也想以字母的形式获得它的顺序,因为如果不是,它们将处于相同的位置,因此问题可以很容易地回答,我希望得到答案与字母并按字母顺序排列。请非常需要您的帮助:(

最佳答案

--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 fiddle :- http://sqlfiddle.com/#!6/96e09/3

关于SQL Server 列排序,对 2 个或更多列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46625156/

相关文章:

SQL Server : how do I get data from a history table?

MYSQL 表列约束基于其他表列

sql - 解析 SQL - 从表中选择的所有 Teradata 关键字

sql - 有什么方法可以从一个正在运行的 SP 获取表并将其提供给 SQL Server 中的另一个 SP?

mysql - 如果我有一个带有 alowed 字母的多重集,应该使用什么样的数据库来存储单词列表然后快速搜索单词?

sql - 当主键在 sql 中已知时,如何对特定单元格进行外键引用?

mysql - 带有数字列表的函数 REGEXP

sql-server - Ubuntu 14.04 + Lamp 1.2.4 mssql_connect 不工作

sql - 使用两列创建索引和在两列上创建单独索引之间的区别

sql - 使用逗号分隔符拆分列