我在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,但它没有用!
谢谢你和问候。
答案 0 :(得分:5)
实际上,您希望第二列中包含100的行移到底部第一个,然后按第一列排序:
order by (case when col2 = 100 then 1 else 0 end),
col1
答案 1 :(得分:2)
使用下面的CASE
表达式
SELECT *
FROM tab
ORDER BY CASE
WHEN column2 = 100 THEN 1
ELSE 0
END ASC,
column1 asc
答案 2 :(得分:1)
SELECT *
FROM table1
ORDER BY
CASE
WHEN col2>=100 THEN 1
ELSE 0
END,
col1,
col2