0

我在 sql server 中的选择有问题,我有这个表有 2 列:

a   2
b   1
c  100
d   1
a  100
b   1
c   2
d   1

我想根据第一列订购它,这样:

a   2
a   100
b   1
b   1
c   2
c   100
d   1
d   1

但是 j 想要将 secondcolumn=100 的行移到底部,所以:

a   2
b   1
b   1
c   2
d   1
d   1
a  100
c  100

我已经尝试使用子句 ORDER BY column1 ASC, (column2=100) ASC,但它没有用!

谢谢和问候。

4

3 回答 3

5

实际上,您希望第二列中具有 100 的行首先移动到底,然后按第一列排序:

order by (case when col2 = 100 then 1 else 0 end),
         col1
于 2013-08-05T13:30:39.477 回答
2

使用如下CASE表达式

SELECT * 
FROM   tab 
ORDER  BY CASE 
            WHEN column2 = 100 THEN 1 
            ELSE 0 
          END ASC,
          column1 asc 
于 2013-08-05T13:28:11.397 回答
1
SELECT * 
FROM table1
ORDER BY 
CASE 
   WHEN col2>=100 THEN 1
   ELSE 0
END,
col1,
col2

SQLFiddle 示例

于 2013-08-05T13:32:12.863 回答