Вложенные операторы IF в Hive - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу скопировать оператор if в мой код Hive. По сути, я потратил с 2014-2018 гг. На соответствующего клиента, я пытаюсь понять, в прошлом году клиент перестал тратить с нами, и на чем основывается потеря в $ на расходах предыдущего года. Я не могу сделать оператор CASE, так как есть пара переменных, которые я просматриваю для каждого оператора IF, но я открыт для предложений!

If (FY_2014 > 0, (If(FY_2015 = 0, FY_2014,0)), 0) as '2014to2015'
    If (FY_2015 > 0, (If(FY_2016 = 0, FY_2015,0)), 0) as '2015to2016'
        If (FY_2016 > 0, (If(FY_2017 = 0, FY_2016,0)), 0) as '2016to2017'
            If (FY_2017 > 0, (If(FY_2018 = 0, FY_2017,0)), 0) as'2017to2018'

Заранее спасибо за помощь, ребята!

Ответы [ 2 ]

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

Я думаю, что это будет работать точно так же с меньшими условиями.

case when FY_2014 > 0 AND FY_2015 = 0 then FY_2014 else 0 end as "2014to2015",
case when FY_2015 > 0 AND FY_2016 = 0 then FY_2015 else 0 end as "2015to2016",
case when FY_2016 > 0 AND FY_2017 = 0 then FY_2016 else 0 end as "2016to2017",
case when FY_2017 > 0 AND FY_2018 = 0 then FY_2017 else 0 end as "2017to2018"
0 голосов
/ 07 ноября 2018

Как насчет вложенного случая?

   case when FY_2014 > 0 then case when FY_2015 = 0 then FY_2014 else 0 end else 0 end as "2014to2015",
   case when FY_2015 > 0 then case when FY_2016 = 0 then FY_2015 else 0 end else 0 end as "2015to2016",
   case when FY_2016 > 0 then case when FY_2017 = 0 then FY_2016 else 0 end else 0 end as "2016to2017",
   case when FY_2017 > 0 then case when FY_2018 = 0 then FY_2017 else 0 end else 0 end as "2017to2018"
...