2013-04-24 52 views
0

我需要創建視圖,我基本上必須組合三個表才能查看聯繫人上次驗證的時間。這是我到目前爲止的代碼:Oracle SQL創建視圖無效標識符

CREATE VIEW P_PHONECONTACT_VERIFICATION_V AS 
SELECT OW.LASTNAME, OW.FIRSTNAME, OW.EMAIL, 
     OP.PHONE_CONTACTID, OP.PHONENUM, OP.PHONETYPE, 
     OC.LAST_DATE_VERIFIED AS VERIFIED_ON 
    FROM P_OWNER OW 
    LEFT JOIN P_OWNERCONTACT OC 
      ON OW.OWNERID = OC.OWNERID 
    LEFT JOIN P_OWNERPHONE OP 
      ON OC.CONTACTID = OP.PHONE_CONTACTID 
WHERE VERIFIED_ON IS NULL OR 
     VERIFIED_ON > SYSDATE-365 
ORDER BY LASTNAME; 

我不斷收到此錯誤,並找不到原因。

Error at Command Line:10 Column:7 
Error report: 
SQL Error: ORA-00904: "VERIFIED_ON": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 

如果有人能幫助,我將不勝感激。

+0

我正在嘗試將該視圖的OC.LAST_DATE_VERIFIED重命名爲VERIFIED_ON。我做對了嗎? – 2013-04-24 19:42:41

+0

請參閱http://stackoverflow.com/questions/3852831/how-to-use-alias-in-where-clause基本上,您不能在WHERE子句中使用列別名。 – 2013-04-24 19:46:35

回答

1

您在where子句中使用verified_on。我認爲你需要last_date_verified代替:

CREATE VIEW P_PHONECONTACT_VERIFICATION_V AS 
SELECT 
OW.LASTNAME, OW.FIRSTNAME, OW.EMAIL, 
OP.PHONE_CONTACTID, OP.PHONENUM, OP.PHONETYPE, 
OC.LAST_DATE_VERIFIED AS VERIFIED_ON 
FROM P_OWNER OW LEFT JOIN P_OWNERCONTACT OC 
ON OW.OWNERID = OC.OWNERID 
LEFT JOIN P_OWNERPHONE OP 
    ON OC.CONTACTID = OP.PHONE_CONTACTID 
WHERE OC.LAST_DATE_VERIFIED IS NULL OR 
OC.LAST_DATE_VERIFIED > SYSDATE-365 
ORDER BY LASTNAME; 

where子句中不能使用select子句中定義的列別名。

+0

非常感謝。這工作完美。 – 2013-04-24 20:27:56