Есть три таблицы с данными, как показано ниже:Условный присоединяется в одном запросе
ТОРГОВ:
GRD_TIME_ZONE:
PRI_TIME_ZONE:
Мне нужно получить значение time_zone. Для этого у меня есть два варианта:
Вариант 1:
SELECT trade_id, t.grd_exch_cd, time_zone_name
FROM trades t
JOIN grd_time_zone gtz ON t.grd_exch_cd = gtz.grd_exch_cd;
Вариант 2:
SELECT t.trade_id, t.grd_exch_cd, time_zone_name
FROM trades t
JOIN pri_time_zone ptz ON t.trade_id = ptz.trade_id;
Если вы заметили, я не получаю time_zone для всех трех сделок.
Мое требование объединить оба вышеуказанных запросов в один запрос, используя следующую логику:
Если grd_exch_cd в таблице торгов сопоставлен один и только один TIME_ZONE в grd_time_zone таблице, а затем получить значение оттуда.
Если таблица grd_exch_cd в таблице сделок NULL, получите значение time_zone из таблицы pri_time_zone.
Если таблица grd_exch_cd в таблице торгов сопоставляется более чем 1 time_zone в таблице grd_time_zone, тогда получите значение time_zone из таблицы pri_time_zone.
SELECT trade_id, t.grd_exch_cd, time_zone_name
FROM trades t
-- if grd_exch_cd is mapped to one time_zone in grd_time_zone
JOIN grd_time_zone gtz ON t.grd_exch_cd = gtz.grd_exch_cd
-- else if grd_exch_cd is NULL or mapped to more than one time_zone in grd_time_zone
JOIN pri_time_zone ptz ON t.trade_id = ptz.trade_id;
Может кто-то пожалуйста, помогите в разработке такого запроса, который выполняет условное соединение.