Oracle-Как исправить ошибку ORA-00904 моего кода - PullRequest
0 голосов
/ 14 октября 2019

Мой код ниже показывает ошибку ORA-00904, которую я не знаю почему. Как изменить мой код?

[Таблицы и данные] Есть две таблицы.

CREATE TABLE C_M_A_O_I  (  
  WORK_DATE VARCHAR(15),  
  HE  VARCHAR(15), 
  WERKS  VARCHAR(15),
  GOODS_CD  VARCHAR(15), 
  M_E_C VARCHAR(15),
  SUBPROCESS  VARCHAR(15),
  MODEL_MNO VARCHAR(15) 
  );

Вставка данных в эту таблицу

INSERT INTO C_M_A_O_I(WORK_DATE,HE,WERKS,GOODS_CD,M_E_C,SUBPROCESS,MODEL_MNO)
 VALUES ('20181206','C6','61','R3','e1','M000','C01A');

Другая таблица,

CREATE TABLE C_W_B  (  
  HE VARCHAR2(22), WERKS VARCHAR2(22),
  GOODS_CD VARCHAR2(22),W_G VARCHAR2(22),
  WC_VAL VARCHAR2(22), K1 VARCHAR2(22),
  K2 VARCHAR2(22), K3 VARCHAR2(22),
  K4 VARCHAR2(22), K5 VARCHAR2(22),
  K6 VARCHAR2(22), K7 VARCHAR2(22),
  K8 VARCHAR2(22), K9 VARCHAR2(22),
  K10 VARCHAR2(22), K11 VARCHAR2(22),
  K12 VARCHAR2(22), K13 VARCHAR2(22),
  K14 VARCHAR2(22), K22 VARCHAR2(22),
  K16 VARCHAR2(22) );    

Вставка данных в эту таблицу

   INSERT INTO C_W_B(HE,WERKS,GOODS_CD,W_G,WC_VAL,K1,K3,K4,K6) VALUES 
    ('C6','61','R3','L_C_F','1','IS','C01A','30','10');
    INSERT INTO C_W_B(HE,WERKS,GOODS_CD,W_G,K1,K2) VALUES 
    ('C6','61','R3','L_E','IS','E1');

[Мой код] Я хочу вычислить для каждой строки в таблице C_M_A_O_I. Но ошибка показывает. Кажется, что имена столбцов с псевдонимом «O» показывают ошибки.

 SELECT 
 (SELECT L_T /QTY2*1000*60
        FROM(
        SELECT pno,L_T,QTY2,ROW_NUMBER() OVER(ORDER BY pno DESC) AS rnum 
        FROM (
            SELECT 
            A.WC_VAL AS pno,NVL(TO_NUMBER(A.K4),0) AS  L_T, NVL(TO_NUMBER(A.K6),0) AS QTY2
            FROM C_W_B A, C_W_B B 
            WHERE 1=1
            AND A.HE = O.HE  
            AND A.WERKS =O.WERKS AND A.GOODS_CD =O.GOODS_CD  
            AND A.K1 = B.K1
            AND B.K1=(SELECT 
                          A.K1
                          FROM C_W_B A
                          WHERE 1=1
                          AND A.HE = O.HE 
                          AND A.WERKS = O.WERKS  
                          AND A.GOODS_CD ='R3'
                          AND A.K2=O.M_E_C) 
            AND A.W_G='L_C_F'
            AND A.K3 LIKE O.MODEL_MNO  -- ORA-00904 "O"."MODEL_MNO" invalide identifier error shows
        ) 
        ) WHERE rnum =1)
FROM C_M_A_O_I O 
WHERE O.HE='C6'   
AND O.WERKS='61'    
AND O.GOODS_CD='R3'  
AND O.WORK_DATE>='20181201' 
AND O.WORK_DATE<='20181206'
AND SUBPROCESS ='M000';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...