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

问题描述

| 好吧,我想通过这种方式来处理我的多个(实际上只有2个)订单。 我有两列\“ valorMensal \”整数和\“ ordem_alternativa \”整数 这是我的查询内容: ORDER BY valorMensal DESC,ordem_alternativa DESC; 我希望sql首先获取valorMensal,然后按顺序排列,其中\“ valorMensal \”整数更高,直到达到1,因为下一个数字为0,我不希望它得到0,我希望它转到\“ ordem_alternativa \”并在DESC中获取其所有值,然后再次直到其达到0,然后回到\“ valorMensal \”左移0 \,然后转到\“ ordem_alternativa \”,然后得到0 \的左边。 表格示例如下: id valor勋章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 我怎么做? ^^我希望我很清楚。     

解决方法

如果ordem_alternativa的值介于0..N(0到N)之间,则可以执行以下操作。我还没有测试过,但是应该可以工作:
ORDER BY
CASE 
WHEN valorMensal = 0 THEN (N - ordem_alternativa)
ELSE valorMensal
END DESC
另外,您还应该使用\“ SQL \”标记标记该问题。