我有一個EMPLOYEE
表EMP_ID
,NAME
和DEPARTMENT_ID
。根據列值升序和降序
我想訂購奇數DEPARTMENT_ID
的所有記錄爲ASC
,甚至DEPARTMENT_ID
爲DESC
。
可以這樣做嗎?
謝謝
我有一個EMPLOYEE
表EMP_ID
,NAME
和DEPARTMENT_ID
。根據列值升序和降序
我想訂購奇數DEPARTMENT_ID
的所有記錄爲ASC
,甚至DEPARTMENT_ID
爲DESC
。
可以這樣做嗎?
謝謝
可以在ORDER BY
使用CASE
,相應地更改標誌:
...
ORDER BY CASE WHEN DEPARTMENT_ID % 2 = 0
THEN -DEPARTMENT_ID
ELSE DEPARTMENT_ID END ASC;
使兩個查詢,第一個過濾器的賠率,第二對。按照您的意願訂購,然後聯合查詢。
SELECT e.* FROM (SELECT *
FROM EMPLOYEE
WHERE MOD(DEPARTMENT_ID, 2) = 1
ORDER BY DEPARTMENT_ID ASC) e
UNION ALL
SELECT e1.* FROM (SELECT *
FROM EMPLOYEE
WHERE MOD(DEPARTMENT_ID, 2) = 0
ORDER BY DEPARTMENT_ID DESC) e1
我正在使用oracle 11g。我用這個代碼不會工作(在用mod()替換'%'後) –
好吧,我沒有知識來回答另外一個數據庫,而不是mysql,但你知道不了嗎?兩個單獨的查詢,你團結起來。 –
試試這個
SELECT *
FROM EMPLOYEE
ORDER BY CASE WHEN DEPARTMENT_ID % 2 = 1 then 1 else 2 end,DEPARTMENT_ID
訂單都是遞增的,只是把它們分成兩組。 Odd應該是ASC,甚至應該是DESC。 –
雅,這將有助於謝謝。 –