Привет! Я создал следующий оператор SQL, чтобы помочь мне объединить данные из одной таблицы в другую. Следующий код, кажется, работает нормально.
MERGE INTO FTOURSTATS ts
USING (SELECT * FROM guest_tour) t
ON (t.TOUR_ID = ts.TOURID AND t.START_DATETIME = (SELECT CALENDARDATE FROM FTIMEPERIOD tp WHERE ts.TIMEID = tp.TIMEID) AND ((SELECT SYSDATE FROM DUAL) - t.START_DATETIME ) < 7)
WHEN MATCHED THEN
UPDATE SET
ts.TOTALREVENUE = ts.TOTALREVENUE + ((SELECT COST_PER_DAY FROM TOUR WHERE TOUR_ID = t.TOUR_ID) * 0.1),
ts.TOTALTOURISTS = ts.TOTALTOURISTS + t.GROUP_SIZE
Однако, когда я ввожу следующий код
WHEN NOT MATCHED THEN
INSERT VALUES( (SELECT TIMEID FROM FTIMEPERIOD WHERE CALENDARDATE = t.TOUR_ID),1, t.TOUR_ID,(SELECT COST_PER_DAY FROM TOUR WHERE TOUR_ID = t.TOUR_ID) * 0.1,t.group_size);
II, получаю следующую ошибку
Error at Command Line : 10 Column : 69
Error report -
SQL Error: ORA-00904: "T"."TOUR_ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Но все идентификаторы работали в разделе выше. Это может быть из-за проблемы с областью? Любая помощь будет принята с благодарностью. Я хочу, чтобы и Сопоставленные, и НЕ соответствовавшие что-то делали. Они отметили это как дубликат, когда ничего не должно быть сделано в совпавшем, но это мне совсем не помогает