Проверьте значение столбца, чтобы заполнить несколько столбцов в кусте - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь создать таблицу Y. Я застрял в следующем состоянии: -

Если столбец a таблицы X равен 1 (Xa = 'Y'), тогда Xb заполнит Yb, а Xc будетзаполнить Yc

Если столбец a таблицы X равен 0 (Xa = 'N'), тогда Xb заполнит Yd, а Xc заполнит Ye

Я пытался использовать «case when», но это даетмне 2 ряда.Мне нужно сохранить только 1 ряд.

введите описание изображения здесь

ТАБЛИЦА X

a |б |c |

Y |1 |3 |

N |2 |4 |

ТАБЛИЦА Y

b |с |д |e |

1 |3 |2 |4 |

Мне нужен такой результат.

Как мне реализовать это условие в HiveQl?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Использование case выражений + сумма () агрегат:

insert overwrite table Y
select 
sum(case when x.a=1 then x.b end) as b
sum(case when x.a=1 then x.c end) as c
sum(case when x.a=0 then x.b end) as d
sum(case when x.a=0 then x.c end) as e
from
tableX x;
0 голосов
/ 13 сентября 2018

Это то, что вы хотите?

create table y as
   select (case when x.a = 1 then x.b end) as b,
          (case when x.a = 1 then x.c end) as c,
          (case when x.a = 0 then x.b end) as d,
          (case when x.a = 0 then x.c end) as e

   from x;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...