not a Selected expression:不是一个查询表达式;

原始报错sql:

select
distinctreport.fid as "reportId",-- assign.fassigntype as "type",report.fsalestatus as "saleStatus",report.ftransactionstatus as "transactionStatus",report.fsettleaccountstatus as "settleAccountStatus",report.ftenementdetail as "tenementDetail",person.fid as "personId",person.fname as "personName",-- 上数业绩,分成比例(select sum(assign.fprice) || '| ' || sum(assign.fproportion)from t_trade_commissionassign assignwhere report.fid = assign.fktransactionreportidand assign.fkpersonid = person.fid) as "ppsum",to_char(report.ftransactiondate,'yyyy-MM-dd') as "transactionDate"from t_hr_person personleft join t_trade_commissionassign assign on person.fid=assign.fkpersonidleft join t_trade_transactionreport report on assign.fktransactionreportid=report.fidwhere 1=1  and person.fid = '90481a8d-0c05-4002-9532-26e0482a96af'       and to_char(report.ftransactiondate,'yyyy-MM-dd') >= '2017-10-24'order by report.ftransactiondate desc;      

通常ORA-01791--的错误,都是在使用distinct后出现的。

通常是因为distinct和order by 一起使用,因为字段名称冲突报错。

上面的SQL报错是因为order by后使用的字段名称,使用的是原始名称,不是使用别名“transactionDate”所导致的。

也就是说,如果有distinct时,order by后面跟的字段名称,必须是最新的别名(若没有别名,就使用原来的名称,若有多层子查询,则使用最新的那个别名);

上面错误修改:

 order by report.ftransactiondate desc;     

改为

 order by "transactionDate" desc;     

这样就可以执行成功了。

distinct使用注意点:

1.必须放在查询字段最前面 (若不出最前面,会报错:表达式缺失)

2.distinct后面有多个查询字段时,当这多个字段完全不同时,才算是重复记录,予以剔除

如果查询多个字段,只想给第一个字段去重,那么这样做事不可以的

3.distinct与order by连用时,order by后面的排序字段名,必须是最新的字段名称或别名。

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中未出现的列名也可用于ORDER BY 子句中,只要TABLE中有就行。但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的列名,而且如果SELECT子句中使用了任何运算符,在ORDER BY 子句中必须保持和SELECT子句中表达式完全一致,否则出现错误:“ORA-01791: 不是 SELECTed 表达式”。

11 ORA系列:ORA-01791: 不是 SELECTed 表达式(distinct使用注意点)相关推荐

  1. 苹果11:系列评测,万元巨款哑铃表现如何?

    今年的 iPhone 终于回归了正常的命名,前两年的 "X" 苹果一直都不是读做"X"而是读作"ten",所以前两代 iPhone 也可以说 ...

  2. oracle redact数据编译后 查询报错 不是selected表达式

    环境:oracle 11.2.0.4 问题:select distint 语句查询redact(加密)后的表报错不是selected表达式,而在加密之前执行同样的sql不报错,解决方案在文章最后面 实 ...

  3. C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二)

    2019独角兽企业重金招聘Python工程师标准>>> C++11新特性中的匿名函数Lambda表达式的汇编实现分析(一) 首先,让我们来看看以&方式进行变量捕获,同样没有参 ...

  4. ORA-01791: 不是 SELECTed 表达式

    Oracle 9i数据库,执行下面语句出现错误"ORA-01791: 不是 SELECTed 表达式":select distinct t.name from auth_emplo ...

  5. C#表达式目录树系列之5 –动态创建查询表达式

    概要 在项目开发中,根据用户的需求,一般来是,我们的查询表达式是固定的,新的查询需求都要通过代码的修改来实现.而对于不确定的查询条件,固定查询表达式的方式显然是行不通的. 针对固定查询表达式存在的问题 ...

  6. oracle 不是selected表达式,查询语句报不是 SELECTed 表达式错误

    Oracle 9i数据库,执行下面语句出现错误"ORA-01791: 不是 SELECTed 表达式":select distinct t.name from auth_emplo ...

  7. 10 ORA系列:ORA-12704 字符集不匹配 character set mismatch

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. 关于Union 中 ORA-12704:字符集不匹配 character set ...

  8. 09 ORA系列:ORA-06553 PLS-306

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. ORA-06553: PLS-306: wrong number or types ...

  9. 08 ORA系列:ORA-01861 文字与格式字符串不匹配

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. 现象:Oracle 插入时间时 ,报错:ORA-01861: 文字与格式字符串不匹 ...

最新文章

  1. 征途linux mysql_MySql征途之mysql常用命令
  2. [专栏]壹周技术秀(第一期)
  3. java 静态初始化 调用_java JVM-类加载静态初始化块调用顺序
  4. 有图有真相!同是滑屏,荣耀Magic2不只比小米MIX3缝隙小,还更稳定
  5. 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析
  6. vue-video-player修改src就会报错_4、修改入口点代码
  7. USACO-Section2.1 Healthy Holsteins (深度优先搜索)
  8. prototype 1.3.1 跟 ajax冲突!!!莫名其妙!
  9. 博客园项目开发中的难点
  10. 11 EDA技术实用教程【时序电路的Verilog设计2】
  11. 计算机主机跳线连接图片,台式电脑主机五根跳线怎么接?红白 蓝白 绿 白 橙白...
  12. 75.【JavaWeb-03】
  13. 计算机歌曲夜空中最亮的星,抖音夜空中最亮的星电视剧插曲歌曲介绍
  14. WebStrom中一些有趣的工具与常用快捷键
  15. 电池充电IC市场现状研究分析与发展前景预测报告
  16. 关于研究鼠标绘制平滑曲线的阶段总结
  17. html怎么多行超出省略号,css+js 如何实现多行文字超出显示省略号(需要同时兼容ie chrome等浏览器)...
  18. SpringBoot WEB怎么实现大文件上传
  19. SQL注入攻击的实现和防止
  20. javaScript-如何引入js代码

热门文章

  1. 智能合约重构社会契约(12)天秤币
  2. (chap1 网络基础知识)通信类型
  3. 差分能量分析介绍(一)
  4. 第十三届“华中杯”大学生数学建模挑战赛题目 B 题 技术问答社区重复问题识别
  5. 设计模式--备忘录(Memento)模式
  6. 【python】算法引入及算法特性和时间复杂度
  7. 思想解读:optee中的多线程处理
  8. MTK的LK代码异常向量表解析
  9. [答疑]-中断流程举例:在TEE侧时产生了FIQ,回到REE后为啥又产生了IRQ
  10. [ARM-assembly]-汇编示例:c语言翻译成汇编