【发布时间】:2019-10-08 19:02:56
【问题描述】:
您好,我创建了以下 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);
我收到以下错误
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:
但是所有标识符都在上面的部分中起作用。这可能是因为范围问题吗?任何帮助将不胜感激。我希望匹配和不匹配都做一些事情。他们将此标记为重复项,以便在匹配项中必须执行任何操作,但这对我没有任何帮助
【问题讨论】: