make Multiple Order BY忽略一些值,然后转到下一个

时间:2011-05-26 19:09:23

标签: conditional sql-order-by

好吧,我想通过这种方式使我的多个(实际上只有2个)订单。

我有两列“valorMensal”整数和“ordem_alternativa”整数

以下是我的疑问:

ORDER BY valorMensal DESC,ordem_alternativa DESC;

我希望SQL首先获取valorMensal并按顺序将“valorMensal”整数设置为高,直到达到1,因为下一个数字为0我不希望它获得0,I希望它转到“ordem_alternativa”并在DESC中获取所有值,直到它达到0然后返回“valorMensal”,得到0的左边然后转到“ordem_alternativa”并得到0的左边。

这里的示例是表:

id valorMensal    ordem_alternativa
1      0                  6
2      0                  5
3      1                  2
4      3                  1
5      4                  1
6      0                  0
7      0                  0

ResultSet我希望它是这样的:

id 5,4,3,2(因为ordem_alternativa为5),1(因为ordem_alternativa为6),6,7

我该怎么做? ^^我希望我很清楚。

1 个答案:

答案 0 :(得分:0)

如果ordem_alternativa的值介于0..N(0到N)之间,你可以这样做。我没有测试它,但它应该工作:

ORDER BY
CASE 
WHEN valorMensal = 0 THEN (N - ordem_alternativa)
ELSE valorMensal
END DESC

此外,您应该使用“SQL”标记标记问题。