2016-10-20 11 views
1

請求書番号を繰り返すことができる表にBillNumberフィールドがあり、特定の請求書の最後の行を取得したいが、OracleではなくSQL Server上で正常に動作するこの文を使用した。データベース:Oracle Select文のエラー

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:コマンドが正常に

答えて

0

のようになります。

select * from dual as d; 

ORA-00933: SQL command not properly ended 
00933. 00000 - "SQL command not properly ended" 
*Cause:  
*Action: 
Error at Line: 1 Column: 20 

select * from dual d; 

DUMMY 
----- 
X 
+0

あなたは私がすべてのキーワードを 'AS'テーブルへのエイリアス? –

+0

はい............ –

2

を終了していないあなたは、サブクエリの別名でミスを犯します- asを削除します。正しいバージョンは、Oracleは、列の別名のために、表の別名のキーワードに AS を受け入れていない、不思議なことに

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

これはまだ私に恥))最初のテーブル – Aleksej

+0

のための 'AS' として持っています。ありがとう@Aleksej – Zhenora

+0

はい、申し訳ありません私は古い文を貼り付けました –