您的位置:首页 > 其它

Ora-01791 不是Selected表达式”错误

2008-08-27 17:45 253 查看
偶写一个销售查询的功能模块,但在测试的时候按 条码/编码/库房 条件排序的时候都没有错误,只要按日期查的时候就会有“Ora-01791 不是Selected表达式”的错误信息,于是查看我的SQL语句,语句如下:
select distinct GoodsId,Barcode,DepotId,GoodsName from sa_sale where depotid='11' order by selldate
这句话执行的时候就有错误 ,但把排序换成 order by Goodsid 或其它 Barcode,DepotId,GoodsName的时候均没有错误,到此可能大家都想到了,因为 selldate不在查询结果字段中,而且这个语句是distinct语句。所以会出现这个错误
下边给出正确的解决办法:
Select GoodsId,Barcode,DepotId,GoodsName from
(Select distinct GoodsId,Barcode,DepotId,GoodsName,SellDate from sa_sale where depotid='11' )
order by selldate

查到关于这个ora错误的解释:
如果在ORDER BY中指定多个列,结果将先按照子句中的第一个列排序,然后第二个,依此类推
在SELECT中未出现的列名也可用于ORDER BY 子句中,主要TABLE中有就行,但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的列名,而且如果SELECT子句中使用了任何运算符,在ORDER BY 子句中必须保持和SELECT子句中表达式完全一致,否则出现ORA-01791 ERROR
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: