Мой код ниже показывает ошибку 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';