снежинка - присоединиться к результату функции разделения - PullRequest
0 голосов
/ 07 ноября 2019

Я сталкиваюсь с проблемой присоединения по результату функции split. Следующий запрос работает, где str_field - это строковое поле в таблице my_table.

select
    *
    from my_table,
        (lateral flatten(input=>split(str_field, ',')));

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

неверный идентификатор 'str_field'

select
    *
    from my_table t,
        (select distinct value from lateral flatten(input=>split(t.str_field, ',')));

Как я могу перекрестное соединение на уникальных значениях разделения str_field? Мне нужно получить все значения my_table, поэтому select * является обязательным (select distinct value недостаточно)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Работа с CTE - жизнеспособное решение. Поэтому ваш запрос должен выглядеть следующим образом:

with dist_mytbl as (
select
    distinct value
    from my_table,
        (lateral flatten(input=>split(str_field, ','))))

select * from dist_mytbl;
0 голосов
/ 07 ноября 2019

Чтобы получить определенное значение, вам нужно сделать что-то вроде этого

select distinct value from my_table,(lateral flatten(input=>split(str_field, ',')));
...