我有一個表,表A有條件的排序,看起來像這樣:T-SQL:兩列
ColA ColB
0 20
1 10
0 5
1 15
我要對行進行排序,以便在那裏可樂= 0首先列出的所有記錄,然後這些記錄按ColB遞增排序。列出ColA = 0的所有行後,我想列出ColA = 1的所有行,但這些行按ColB遞減排序。
結果應該是這樣的:
ColA ColB
0 5
0 20
1 15
1 10
這可能嗎?謝謝你的幫助。
我有一個表,表A有條件的排序,看起來像這樣:T-SQL:兩列
ColA ColB
0 20
1 10
0 5
1 15
我要對行進行排序,以便在那裏可樂= 0首先列出的所有記錄,然後這些記錄按ColB遞增排序。列出ColA = 0的所有行後,我想列出ColA = 1的所有行,但這些行按ColB遞減排序。
結果應該是這樣的:
ColA ColB
0 5
0 20
1 15
1 10
這可能嗎?謝謝你的幫助。
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
SELECT ColA,ColB
FROM table
ORDER BY
ColA, (CASE WHEN ColA = 1 THEN -1 * ColB ELSE ColB END)
絕對比oryol更短的解決方案,但乘法運算可能會帶來性能問題。 – AndroidDev
非常感謝。不知道可以在訂單條款中使用案例陳述。每天學習新東西。 – AndroidDev
實際上,我無法將這種模式應用到SQL Server 2008中。 –
對不起,我再次測試:實際上,問題只是代碼中輸入錯誤的逗號(在't.ColA'之後和'case'之前有兩個逗號 –