Как исправить ORA-00918: столбец неоднозначно определен - PullRequest
1 голос
/ 25 марта 2019

Я новичок в oracle sql, этот код работал бы в tsql, но, похоже, не работает в oracle sql.Я получаю столбец

ORA-00918: с неопределенным определением

.Я не могу определить, где проблема, вы можете помочь?

проблема, кажется, в соединении, потому что, когда я заменяю объединение простым предложением where, ошибка исчезает

WITH cte1 AS
   (select t1.CONTAINER_NUMBER        as t1_CONTAINER_NUMBER,
           t1.LAST_UPDATE_TIME        as t1_LAST_UPDATE_TIME,
           t1.TRANSACTION_TIME        as t1_TRANSACTION_TIME,
           t1.EVENT,
           t1.LINE_OPERATOR,
           t1.BOOKING_NUMBER,
           t1.ISO_SIZE_TYPE,
           t1.GROSS_WEIGHT,
           t1.CATEGORY,
           t1.STATUS,
           t1.POS_MODE,
           t1.ARR_MODE,
           t1.ARR_CARRIER,
           t1.ARR_VOYAGE,
           t1.DEP_CARRIER,
           t1.DEP_MODE,
           t1.DEP_CARRIER,
           t1.LOAD_PORT,
           t1.DESTINATION_PORT,
           t1.TRUCKER_LICENSE,
           t1.FROM_RAILCAR_NAME,
           t1.TO_RAILCAR_NAME,
           t1.YARDARRIVAL_TIME,
           t1.YARDDEPARTURE_TIME,
           t1.CUSTOMER_REFERENCE,
           t1.CONTAINER_LENGTH,
           t1.CONTAINER_WIDTH,
           t1.CONTAINER_HEIGHT,
           t1.TERMINAL_ARRIVAL_TIME,
           t1.TERMINAL_DEPARTURE_TIME
      from CONTAINER_HISTORY_MVW t1
     where t1.CONTAINER_NUMBER = 'BEAU2105501'
       and t1.EVENT is not null),
  cte2 AS
   (select t2.CONTAINER_NUMBER      as t2_CONTAINER_NUMBER,
           t2.LAST_UPDATE_TIME      as t2_LAST_UPDATE_TIME,
           t2.TRANSACTION_TIME      as t2_TRANSACTION_TIME,
           t2.CREATION_TIME,
           t2.EQUIPMENT_MOVE_TYPE,
           t2.FROM_EQUIPMENT_NUMBER
      from CONTAINER_HISTORY_MVW t2
     where t2.CONTAINER_NUMBER = 'BEAU2105501'
       and t2.EVENT is null)
  SELECT cte1.t1_TRANSACTION_TIME,
         cte1.t1_CONTAINER_NUMBER,
         cte1.t1_LAST_UPDATE_TIME,
         cte1.EVENT,
         cte1.BOOKING_NUMBER,
         cte2.t2_TRANSACTION_TIME,
         cte2.CREATION_TIME,
         cte2.EQUIPMENT_MOVE_TYPE,
         cte2.FROM_EQUIPMENT_NUMBER
    from cte1
   inner join cte2
      on cte1.t1_CONTAINER_NUMBER = cte2.t2_CONTAINER_NUMBER
     and cte1.t1_LAST_UPDATE_TIME = cte2.t2_LAST_UPDATE_TIME
   order by cte1.t1_TRANSACTION_TIME, cte2.t2_TRANSACTION_TIME

Ответы [ 2 ]

4 голосов
/ 25 марта 2019

Скорее всего, ошибка вырезания и вставки, но выделите столбец только один раз, или вам нужно присвоить псевдониму второй, чтобы отличить его от первого.

       t1.DEP_CARRIER,
       t1.DEP_MODE,
       t1.DEP_CARRIER,    -- duplicate column name in cte1
0 голосов
/ 25 марта 2019

Я бы сказал, это потому, что ваши столбцы вы поставили "как .." Попробуйте отформатировать столбец вне запроса WITH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...