当前位置:数据库 > Oracle >>

Oracle数据库Ora-01791 不是Selected表达式

今天在调查原代码时遇到一处错误,提示”SELECT式が?o?郡扦?rdquo;百思不得其解。后来发现
是”DISTINCT”关键字在作祟。

我原先的sql语句

 代码如下 复制代码


select  distinct GoodsId,Barcode,DepotId,GoodsName from sa_sale where depotid='11' order by selldate


原句部分代码如下
+ expand source帮助
123456 SELECT DISTINCT  F200.PLACE_NO AS PLACE_NO --省略若干代码 ORDER BY  F200.UP_DATE || F200.UP_TIME   ,F200.YOYAKU_NO

去掉DISTINCT就搞定了~

正确的代码

正确的解决办法:

 代码如下 复制代码

Select  GoodsId,Barcode,DepotId,GoodsName from

(Select  distinct  GoodsId,Barcode,DepotId,GoodsName,SellDate  from sa_sale  where depotid='11' )

  order by selldate

注意:如果在ORDER  BY中指定多个列,结果将先按照子句中的第一个列排序,然后第二个,依此类推
在SELECT中未出现的列名也可用于ORDER BY 子句中,主要TABLE中有就行,但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的列名,而且如果SELECT子句中使用了任何运算符,在ORDER BY 子句中必须保持和SELECT子句中表达式完全一致,否则出现ORA-01791 ERROR

补充:数据库,Oracle教程 
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,