最近做一个数据的查询排序时遇到一个Oracle错误:
查询语句如下:
SELECT DISTINCT
s.usercode,
s.username,
s.groupcode
FROM
(
SELECT DISTINCT
*
FROM
(
(
sys_user U
INNER JOIN sys_user_group ug ON U .userid = ug.userid
)
INNER JOIN sys_group G ON G .groupid = ug.groupid
)
WHERE
groupname = '中心主任'
OR groupname = '分管领导'
) s
INNER JOIN sys_org_info o ON s.org_id = o.org_id
WHERE
corp_id = '40402864560263120156026d7ef2008b'
AND (org_name = '中心领导')
ORDER BY
s.groupcode ASC,
s.userorder
出现如下错误:
[Err] ORA-01791: not a SELECTed expression
因为select distinct 和order by一起使用的时候,order by中必须是常量或者select列表中出现的表达式。
所以:修改一下如下就解决了
SELECT DISTINCT
s.usercode,
s.username,
s.groupcode,
s.userorder
备注:在做人员按职位排序时,简单的order by 无法解决客户要求,所以,在加一个字段记录维护排序数据。就解决了问题