2017-03-15 70 views
0

我是Oracle SQL新手,我被要求做一些場景來學習不同的表達式等等。Oracle中缺少關鍵字錯誤 - 錯誤語法WHERE表達式

我目前正在處理這個聲明,但是我一直遇到語法問題並試圖讓我的表達式在正確的位置。

如果你不介意看看我做錯了什麼,並幫助我學習正確的語法,我會很感激。

我必須在Sale,SaleDetail,OrderStatus,Warehouse,User和StockDetail表中找到所有內容。

我需要找到字段saleno,serialstart,serialend,產品說明(標籤字段),銷售情況(saleid(我認爲)),WarehouseName(WH.NAME)

這裏下面是代碼我迄今寫過。

SELECT 
S.SALENO, 
SD.SERIALSTART, 
SD.SERIALEND, 
SDT.LABEL, 
USR.USERNAME, 
WH.NAME 
FROM 
ITR_SALE, 
ITR_SALEDETAIL, 
ITR_ORDER, 
ITR_WAREHOUSE, 
ITR_USER, 
ITR_STOCKDETAIL 
JOIN ITR_SALE S 
JOIN ITR_SALEDETAIL SD ON S.ID = SD.SALENO 
JOIN ITR_WAREHOUSE WH ON SD.ID = WH.NAME 
JOIN ITR_ORDER ODR ON WH.ID = ODR.STATUSID 
JOIN ITR_USER USR ON ODR.ID = USR.USERNAME 
JOIN ITR_STOCKDETAIL ON USR.ID = SDT.LABEL 
WHERE S.LASTSTATUSCHANGETIME 
BETWEEN ('2016-01-01 00:00:00' AND '2016-12-31 23:59:59') 
AND STATUSID = ('COMPLETED'); 

下面如下錯誤消息

ORA-00905: missing keyword 
00905. 00000 - "missing keyword" 
*Cause:  
*Action: 
Error at Line: 21 Column: 1 

編輯:

成品下面的代碼,改變了一些表達式和條件。

SELECT 
S.SALENO, 
SD.SERIALSTART, 
SD.SERIALEND, 
SDA.LABEL, 
USR.USERNAME, 
WH.NAME 
FROM 
ITR_SALE S 
INNER JOIN 
ITR_SALEDETAIL SD ON S.ID = SD.SALEID 
INNER JOIN 
ITR_ORDERSTATUS ODS ON SD.ID = ODS.ID 
INNER JOIN 
ITR_WAREHOUSE WH ON ODS.ID = WH.NAME 
INNER JOIN 
ITR_USER USR ON WH.ID = USR.USERNAME 
INNER JOIN 
ITR_STOCKDETAIL SDA ON USR.ID = SDA.LABEL 
WHERE 'DATE' BETWEEN '2016-01-01' AND '2016-12-31' 
AND S.STATUSID = '4';` 
+0

從最後兩行刪除括號。 – mathguy

回答

1

使用正確的連接語法。編輯。需要從最後一行或用戶IN子句中刪除括號。

SELECT 
S.SALENO, 
SD.SERIALSTART, 
SD.SERIALEND, 
SDT.LABEL, 
USR.USERNAME, 
WH.NAME 
FROM 
ITR_SALE S INNER JOIN ITR_SALEDETAIL SD ON S.ID = SD.SALENO 
INNER JOIN ITR_SALEDETAIL SD ON S.ID = SD.SALENO 
INNER JOIN ITR_WAREHOUSE WH ON SD.ID = WH.NAME 
INNER JOIN ITR_ORDER ODR ON WH.ID = ODR.STATUSID 
INNER JOIN ITR_USER USR ON ODR.ID = USR.USERNAME 
INNER JOIN ITR_STOCKDETAIL STD ON USR.ID = SDT.LABEL 
WHERE S.LASTSTATUSCHANGETIME 
BETWEEN '2016-01-01 00:00:00' AND '2016-12-31 23:59:59' 
AND STATUSID = 'COMPLETED'; 
+0

也從BETWEEN條件中刪除括號。 – mathguy

+0

對。錯過了。謝謝 – Utsav

+0

排序,感謝您的幫助,我最終改變了一些聲明,但最終發生了一些錯誤。 –