不是SELECTed表达式

sql语句如下:

select distinct(p.project_name) name,p.pkid pkid, p.report_year year, q.cor_name cor_name,getcityname(q.belongs_city) belongs_city,
   p.apply_support_funds_num apply_funds, p.total_app_invest total_app_invest, p.invest completed_invest,
   get_multi_dict_values(‘15‘, p.project_type) project_type,get_multi_dict_values(‘6‘, p.declare_type) sb_type
from ydzj_non_finan_audit_status s,ydzj_non_finan_pro_info p,ydzj_non_finan_cor_info q
where p.pkid = s.project_id and p.pkid = q.project_id and s.app_phase = ‘6‘ and s.app_status = ‘2‘
order by p.apply_support_funds_num desc, p.completed_invest,p.total_app_invest
执行F8,报错。

把p.invest改成p.completed_invest即正确。

原因是:

如果是select * from table_name order by ...,则order by子句中的字段只要求是table_name表中有的字段即可,但select子句中出现distinct后,order by子句中的字段就

必须在select子句中出现,否则会报错。

时间: 2024-10-13 15:38:03

不是SELECTed表达式的相关文章

ORA-01791: 不是 SELECTed 表达式

Oracle 9i数据库,执行下面语句出现错误“ORA-01791: 不是 SELECTed 表达式”:select distinct t.name from auth_employee t order by t.auth_employee_id asc 原来:SELECT语句中含有DISTINCT关键字或者有运算符时,排序用字段必须与SELECT语句中的字段相对应. 网上搜到解释如下:在ORDER BY中指定多个列,结果将先按照子句中的第一列排序,然后第二个,依此类推. 在SELECT中未出现

Oracle查询错误分析 ORA-01791 不是SELECTed表达式

表结构如下: create table HH_BOOK_GOOD ( ID VARCHAR2(32) not null, BOOKID VARCHAR2(32) not null, GOODID VARCHAR2(32) not null, GOODPRICE FLOAT not null, GOODNAME VARCHAR2(256) not null, GOODNOTE VARCHAR2(1024) not null ) 使用下面语句进行查询 select distinct ID,BOOKI

Oracle报错#“ORA-01791: 不是 SELECTed 表达式”解决方法

今天遇到一个Oracle报错,写篇博客记录一下 简单看一下下面这个sql,这也查询是没报错的 select a.area_seq, a.area_name from t_unit_area a WHERE area_seq='1580' order by a.order_num 然后加个distinct去重一下,不要经常使用distinct,因为性能不好 select distinct a.area_seq, a.area_name from t_unit_area a WHERE area_s

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

oracle错误码

ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-00025: 无法分配 ORA-00026: 

Oracle 11g数据库详解(2015-02-28更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle 错误收集

Oracle 错误大全 ORA-00001: 违反唯一约束条件 (.)ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超出最大进程数 ()ORA-00021: 会话附属于其它某些进程:无法转换会话ORA-00022: 无效的会话 ID:访问被拒绝ORA-00023: 会话引用进程私用内存:无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册ORA-00025: 无法分配 ORA-0002

oracle错误代码

ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-00025: 无法分配 ORA-00026:

oracle报错信息对应的编码参照

ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-00025: 无法分配 ORA-00026: