Oracle条件排序依据

crmckain

我正在尝试从数据库中获取用户及其部门的列表。我想按用户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做些什么吗?

Zaynul Abadin Tuhin

尝试如下

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  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章