Oracle условный порядок по - PullRequest
       10

Oracle условный порядок по

0 голосов
/ 22 февраля 2019

Я пытаюсь получить список пользователей и отделов, к которым они относятся, из базы данных.Я хотел бы заказать по пользователям asc, где у них нет отделов, а затем остальные пользователи asc.Ниже мое текущее заявление sql, которое дает мне список пользователей asc, а затем упорядочить по deptCode asc:

SELECT
  userDepts.ID,
  users.ID AS USER_ID,                            
  userDepts.DEPT_CODE,
  users.USERNAME                                     
  FROM SCRIPTS.TB_FRSCHL_USER_DEPTS userDepts
  FULL OUTER JOIN SCRIPTS.TB_FRSCHL_USERS users ON (users.ID = userDepts.USER_ID)
  ORDER BY users.USERNAME ASC, DEPT_CODE ASC

Пример моих результатов приведен ниже:

ID   | USER_ID | DEPT_CODE | USERNAME
null |   1234  |    null   |      adam.doe
null |   2341  |    null   |      ana.jane
9876 |   3412  |    cpsc   |      john.doe
4567 |   4987  |    crim   |      mike.smith
null |   4123  |    null   |      test.user

Я бы хотелкак это выглядит ниже:

 ID   | USER_ID | DEPT_CODE | USERNAME
null |   1234  |    null   |      adam.doe
null |   2341  |    null   |      ana.jane
null |   4123  |    null   |      test.user
9876 |   3412  |    cpsc   |      john.doe
4567 |   4987  |    crim   |      mike.smith

Я пытался использовать CASE в заказе, но пока мне не повезло.Это то, что я хочу, возможно с sql?

1 Ответ

0 голосов
/ 22 февраля 2019

попробуйте, как показано ниже

SELECT
  userDepts.ID,
  users.ID AS USER_ID,                            
  userDepts.DEPT_CODE,
  users.USERNAME                                     
  FROM SCRIPTS.TB_FRSCHL_USER_DEPTS userDepts
  FULL OUTER JOIN SCRIPTS.TB_FRSCHL_USERS users ON (users.ID = userDepts.USER_ID)
  ORDER BY case when userDepts.ID is null then 1 else 2 end , users.ID  
...