T-SQL:两列的条件排序

时间:2012-05-02 16:29:36

标签: tsql sorting

我有一个TableA表,看起来像这样:

ColA    ColB
0        20
1        10
0        5
1        15

我想对行进行排序,以便首先列出ColA = 0的所有记录,然后这些记录按ColB递增排序。在列出所有ColA = 0的行之后,我想列出ColA = 1的所有行,但这些行按ColB递减排序。

结果应如下所示:

ColA    ColB
0        5
0        20
1        15
1        10

这可能吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

select t.ColA, t.ColB
from t
order by t.ColA
   ,case when t.ColA = 0 then t.ColB end asc
   ,case when t.ColA = 1 then t.ColB end desc

答案 1 :(得分:0)

SELECT ColA,ColB
FROM table
ORDER BY 
 ColA, (CASE WHEN ColA = 1 THEN -1 * ColB ELSE ColB END)