我的表中有这些记录:
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/