2013-08-28 39 views
0
SELECT 
    store_seq.NEXTVAL AS STORE_ID, 
    DIST_WRK_STR.* 
FROM 
    (
     SELECT DISTINCT 
      WRK_HHT.COUNTRY_ID AS COUNTRY_ID, 
      CASE 
       WHEN WRK_HHT.LOCAL_STORE_CD IS NULL THEN 
        WRK_HHT.TMP_STORE_CD 
       ELSE 
        WRK_HHT.LOCAL_STORE_CD 
      END AS LOCAL_STORE_CD, 
      CASE 
       WHEN WRK_HHT.LOCAL_STORE_CD IS NULL THEN 
        1 
       ELSE 
        0 
      END AS TMP_SLC_FLG, 
      SYSDATE, 
      SYSDATE 
     FROM 
      WRK_HHTLOGDATA WRK_HHT 
      LEFT OUTER JOIN 
       MST_STORE MST_STR 
      ON 
       WRK_HHT.COUNTRY_ID = MST_STR.COUNTRY_ID 
       AND 
       MST_STR.STORE_LOCAL_CD = 
       (
        CASE 
         WHEN WRK_HHT.LOCAL_STORE_CD IS NULL THEN 
          WRK_HHT.TMP_STORE_CD 
         ELSE 
          WRK_HHT.LOCAL_STORE_CD 
        END 
       ) 
     WHERE 
      MST_STR.STORE_ID IS NULL 
      AND 
      (
       WRK_HHT.LOCAL_STORE_CD IS NOT NULL 
       OR 
       WRK_HHT.TMP_STORE_CD IS NOT NULL 
      ) 
      AND 
      WRK_HHT.COUNTRY_ID = ncountry_id 
      AND 
      WRK_HHT.LOAD_ID = nload_id 
    ) DIST_WRK_STR 

大家好,ORA-00918:列含糊列列表中定義

我得到的錯誤作爲地方DIST_WRK_STR含糊不清的列名*

+0

ncountry_id和nload_id不合格。這可能就是其中之一。 –

+0

你能列出你的表格結構嗎?我們需要知道列名稱才能夠回答您的問題。但是,如果你有資格獲得所有的領域,那麼你就可以解決問題 –

回答

4

SELECT列出SYSDATE兩次。 。由於沒有爲其中任何一個提供列別名,因此Oracle將兩個列都命名爲列"SYSDATE",並生成錯誤消息,因爲它無法區分這兩列。

+0

我認爲Oracle會將它們命名爲「sysdate」和「sysdate_1」,所以這很可能不是錯誤 –

+2

@JafarKofahi,不正確。 SQL Developer(不是Oracle或SQL * Plus)在做類似'select sysdate,double from sysdate'這樣的操作時很方便。但是,執行'select foo。* from(選擇sysdate,sysdate from dual)foo;'會產生'列明確定義的消息。 –

+0

Vadim K:+1確實非常有趣..你每天都會學到新東西:) –