首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Select语句中的错误

Oracle Select语句中的错误
EN

Stack Overflow用户
提问于 2016-10-20 08:30:38
回答 2查看 83关注 0票数 1

我在表中有一个字段BillNumber,可以重复使用票据号,我想得到某个票据的最后一行,我使用了以下语句,它在Server上工作得很好,但在Oracle上却不起作用:

代码语言:javascript
复制
select MB.* 
from SADAD.MAINBILLDETAILS AS MB 
   inner join (select BILLNUMBER, Max(CREATEDON) AS LastDate 
               from SADAD.MAINBILLDETAILS 
               group by BILLNUMBER) As LastBill On MB.BILLNUMBER = LastBill.BILLNUMBER AND MB.CREATEDON = LastBill.LastDate 
where not ISREJECTED Is Null 
  and SubStr(MB.BILLNUMBER,1,3) ='301' 
  and CREATEDON Between To_Date('2016/07/19', 'YYYY/MM/DD') 
  and To_Date('2016/10/19', 'YYYY/MM/DD') 
order by CREATEDON

错误消息:

ORA-00933:命令未正确结束

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-20 08:39:42

奇怪的是,Oracle不接受关键字作为表别名的,只接受列别名。

代码语言:javascript
复制
select * from dual as d;
代码语言:javascript
复制
ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 1 Column: 20
代码语言:javascript
复制
select * from dual d;
代码语言:javascript
复制
DUMMY
-----
X
票数 0
EN

Stack Overflow用户

发布于 2016-10-20 08:38:59

您在子查询As LastBill的别名中犯了错误--删除as。正确的版本应该是

代码语言:javascript
复制
Select MB.*  
  From SADAD.MAINBILLDETAILS  MB 
 Inner Join (Select BILLNUMBER, Max(CREATEDON) AS LastDate 
             From SADAD.MAINBILLDETAILS 
            Group By BILLNUMBER) LastBill On MB.BILLNUMBER = LastBill.BILLNUMBER AND MB.CREATEDON = LastBill.LastDate 
Where Not ISREJECTED Is Null 
  And SubStr(MB.BILLNUMBER,1,3) ='301' 
  And CREATEDON Between To_Date('2016/07/19', 'YYYY/MM/DD') And To_Date('2016/10/19', 'YYYY/MM/DD') 
Order By CREATEDON
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40149268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档