Как запустить другой оператор выбора на основе условия в Hive SQL - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы знать, как запустить другой оператор выбора на основе условия в Hive SQL.

Следующий запрос не работает, но выдает ошибку.

Ошибка при компиляции оператора: СБОЙ: ParseException строка 4: 2 не может распознать ввод рядом с '(' 'SELECT' '1' в выражении спецификация

SELECT 
    CASE WHEN '${UN}'!= '' THEN 
        (
        SELECT * 
            from table1 t 
            WHERE t.yymmddval BETWEEN '${D1}' AND '${D2}'
            AND t.un in ('${UN}')
        )
    ELSE
        (
        SELECT * 
            from table1 t 
            WHERE t.yymmddval BETWEEN '${D1}' AND '${D2}'
            AND t.un in (
               (SELECT
                o.unq_num as un
                FROM table2 as o
                WHERE o.date >= '2017-01-01'
                    AND upper(o.srl_num) in ('${R}')
                LIMIT 1)            
            )       
        )
    END 

1 Ответ

0 голосов
/ 26 апреля 2018

Используйте UNION ALL со своими запросами + добавьте условия для переключения соответствующего запроса:

 select * 
   from table1 t 
   where (t.yymmddval BETWEEN '${D1}' and '${D2}')
     and t.un in ('${UN}') 
     and '${UN}'!= '' --switching condition 

union all

select * 
  from table1 t 
 where (t.yymmddval BETWEEN '${D1}' AND '${D2}')
   and t.un in 
              (SELECT
               o.unq_num as un
               FROM table2 as o
               WHERE o.date >= '2017-01-01'
                   AND upper(o.srl_num) in ('${R}')
               LIMIT 1) 
    and '${UN}'= '' --switching condition
...