场景:
场景:查询表单数据中的申请人的职级,并将申请人和职级去重,且按照单据日期排序
问题描述:
查询报错:ORA-01791: 不是 SELECTed 表达式
代码:
SELECT DISTINCT A.STAFF 申请人,
S.STDNAME 申请人名称,
ra.STDCODE 申请人职级代码,
ra.STDNAME 申请人职级,
A.EXECUTIVE 代理高管,
g.stdname 高管名称,
sg.rank 高管职级,
r.STDCODE 高管职级代码,
r.STDNAME 高管职级名称,
A.BILLCODE 单据编号,
-- A.BILLTIME 单据日期,
A.UNITID
FROM FO_ACCOUNTBILL A--报销单
LEFT JOIN MD_STAFF S--职员
ON A.STAFF=S.RECID
LEFT JOIN SJ_RANK ra--职级
ON S.RANK=ra.RECID
LEFT JOIN SJ_AGENTEXECUTIVE g--高管配置表
ON A.EXECUTIVE=g.RECID
LEFT JOIN MD_STAFF Sg--高管
ON g.EXECUTIVE=Sg.RECID
LEFT JOIN SJ_RANK r--高管职级
ON Sg.RANK=r.RECID
WHERE A.billcode LIKE 'SR%'
AND TO_CHAR(A.BILLTIME,'yyyymm')>'201812'
AND A.EXECUTIVE IS NULL
ORDER BY A.st

当在SQL查询中使用DISTINCT关键字并尝试根据未在SELECT语句中选择的字段进行排序时,会出现ORA-01791错误。问题在于ORDER BY子句中的字段必须与SELECT中的字段匹配。解决方法是将排序字段添加到SELECT列表中,或者删除ORDER BY子句中的不匹配字段。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



