ORA-00904: S.AIR_TIME: неверный идентификатор

Почему этот код показывает неверный идентификатор, когда сумма используется в столбцах Distance и air_time? Когда сумма не используется, этот оператор обрабатывается успешно, но при использовании суммы я получаю сообщение об ошибке? Мне нужно использовать сумму для этого утверждения.

 MERGE INTO FACT_COMPANY_GROWTH F
    USING (SELECT DISTINCT TIME_ID, FLIGHT_KEY, AEROPLANE_KEY, SUM(DISTANCE) AS TOTAL_DISTANCE, SUM(AIR_TIME) AS TOTAL_AIRTIME
    FROM TRANSFORM_FLIGHT T
    INNER JOIN TRANSFORM_AEROPLANE A
    ON T.FK_AEROPLANE_KEY = A.AEROPLANE_KEY
    INNER JOIN DIM_TIME D
    ON D.YEAR = T.YEAR
    AND D.MONTH = T.MONTH
    GROUP BY TIME_ID, FLIGHT_KEY, AEROPLANE_KEY) S
    ON (F.FK1_TIME_ID = S.TIME_ID
    AND F.FK2_FLIGHT_KEY = S.FLIGHT_KEY
    AND F.FK3_AEROPLANE_KEY = S.AEROPLANE_KEY
    ) 
    WHEN MATCHED THEN
    UPDATE SET
    F.TOTAL_AIRTIME = S.AIR_TIME,
    F.TOTAL_DISTANCE = S.DISTANCE,
    F.TOTAL_NO_OF_FLIGHTS = S.FLIGHT_KEY,
    F.TOTAL_NO_OF_AEROPLANE = S.AEROPLANE_KEY
    WHEN NOT MATCHED THEN
    INSERT(FACT_ID, FK1_TIME_ID, FK2_FLIGHT_KEY, FK3_AEROPLANE_KEY, TOTAL_DISTANCE, TOTAL_AIRTIME, TOTAL_NO_OF_FLIGHTS, TOTAL_NO_OF_AEROPLANE)
    VALUES
    (NULL, S.TIME_ID, S.FLIGHT_KEY, S.AEROPLANE_KEY, S.DISTANCE, S.AIR_TIME,  S.FLIGHT_KEY, S.AEROPLANE_KEY);

person Aaheana    schedule 21.12.2020    source источник


Ответы (1)


USING(
    SELECT DISTINCT 
        TIME_ID, 
        FLIGHT_KEY, 
        AEROPLANE_KEY, 
        SUM(DISTANCE) AS TOTAL_DISTANCE, 
        SUM(AIR_TIME) AS TOTAL_AIRTIME
...) S

Проблема в UPDATE SET F.TOTAL_AIRTIME = S.AIR_TIME. В S определено 5 полей, и ни одно из них не имеет имени AIR_TIME.

person JackySky    schedule 21.12.2020