Мне нужно объединить две таблицы door_ctrlr_fact
и equip_store_dim
в моем запросе.
select * from door_ctrlr_fact d
join equip_store_dim e
on d.door_id = e.tech_nbr
Есть небольшой набор данных со специальным door_id
, например WM1-1003-072
. Третье поле в этой строке имеет начальный ноль, который необходимо удалить перед присоединением. Таким образом, запрос для этого подмножества данных:
select * from door_ctrlr_fact d
join equip_store_dim e
on split_part(d.door_id, '-', 1) = split_part(e.tech_nbr, '-', 1)
and split_part(d.door_id, '-', 2) = split_part(e.tech_nbr, '-', 2)
and trim(leading '0' from split_part(e.door_id, '-', 3)) = trim(leading '0' from split_part(e.tech_nbr, '-', 3))
where door_id like 'WM%'
Чтобы обработать все случаи, я мог бы просто объединить два запроса на основе того, как выглядит door_id
.
Например, в таблице door_ctrlr_fact
:
door_id cycle_cnt
A10003 500
WM4-103-070 1000
B200384 2000
В таблице equip_store_dim
tech_nbr store_id
A10003 S001
WM4-103-70 S002
B200384 S004
После объединения результат должен быть:
door_id cycle_cnt store_id
A10004 500 S001
WM4-103-70 1000 S002
B200384 2000 S004
Интересно, а есть ли лучший способ сделать это? Могу ли я использовать только один запрос и по-разному объединять поля в зависимости от формата door_id