2011-05-26 41 views
0

嗯,我想通過這種方式使我的多個(實際上只有2)順序。使多個訂單BY忽略一些值,然後轉到下一個

我有兩列 「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 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,(因爲ordem_alternativa爲5的)2,1(因爲ordem_alternativa是6),6,7

我該怎麼做? ^^我希望我清楚。

+0

沒人?我需要那麼糟糕= / – Grego 2011-05-27 11:57:26

回答

0

如果ordem_alternativa的值在0..N(0到N)之間,你可以這樣做。我還沒有測試它,但它應該工作:

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

此外,你應該用「SQL」標記標記問題。

相關問題