оператор выбора внутри заявления случая для импалы - PullRequest
1 голос
/ 24 июня 2019

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

Таблица соответствия выглядит следующим образом:

serial_no   code    description type

1       J   Jol           CENTRE_TYPE
3       C   Cols          CENTRE_TYPE
4       R   Rud           CENTRE_TYPE
2       A   TCD           CENTRE_TYPE

У меня есть следующий код импалы:

SELECT `prtc`,
    CASE   WHEN LEFT(prtc,1) = 'C' THEN  (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='C' AND TYPE='CENTRE_TYPE')
            WHEN LEFT(prtc,1) = 'A' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='A' AND TYPE='CENTRE_TYPE')
            WHEN LEFT(prtc,1) = 'R' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='R' AND TYPE='CENTRE_TYPE')
            WHEN LEFT(prtc,1) = 'J' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='J' AND TYPE='CENTRE_TYPE')
    END AS CENTRE_TYPE
FROM dev.`tablename`

Я получаю сообщение об ошибке "AnalysisException: не удалось разрешить ссылку на таблицу: 'dev.lookup_table'"

1 Ответ

0 голосов
/ 24 июня 2019

Использовать соединение:

SELECT t.prtc,
       l.DESCRIPTION  as CENTRE_TYPE
FROM dev.`tablename` t
     left outer join dev.lookup_table l on LEFT(t.prtc,1)= l.CODE and l.TYPE='CENTRE_TYPE'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...