Как добавить условие в оператор WHERE на основе JOIN - PullRequest
0 голосов
/ 08 июля 2019

В моем состоянии WHERE следующее w.physical_country = y.destination_country_code

работает нормально, за исключением случаев, когда существует страна Великобритания.Это связано с тем, что в столбце w.physical_country значение равно «UK», тогда как в y.destination_country_code значение равно «GB»

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

dest_leg AS(
SELECT y.* 
FROM 
       (
       SELECT
             y.shipment_id,
             y.route_id,
             min(leg_sequence_id) max_leg_sequence_id
       FROM 
             posimorders.sc_execution_eu.o_detailed_routes_v2 y
             LEFT JOIN warehouse_attributes w                  -- Joining to add country of dest SC
             ON w.warehouse_id = y.leg_warehouse_id

       where 1=1

             and w.physical_country = y.destination_country_code

       group by
             1,2
       ) x
       INNER JOIN posimorders.sc_execution_eu.o_detailed_routes_v2 y
       on x.route_id = y.route_id and x.shipment_id = y.shipment_id and y.leg_sequence_id = x.max_leg_sequence_id
),

1 Ответ

1 голос
/ 08 июля 2019

Для решения Великобритании против ГБ вы можете использовать:

if(w.physical_country='UK','GB',w.physical_country) = y.destination_country_code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...