Hivesql:how do 我比较多个列并从中选择一个值

g6baxovj  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(327)

简而言之,我想选择跨多个列的最小日期。

A                 B             C          D
2015-01-01      2015-01-05       Null     2013-01-01

从上面我想选择最小的日期,并把它放在colunn e。如何做到这一点-我将部署在800m REC上,因此有一个优雅的解决方案会很好:)谢谢。。
少女

guz6ccqo

guz6ccqo1#

你想要的功能是 least() . 问题在于 NULL 价值观。这就足够了:

select least(coalesce(A, '2099-12-31'),
             coalesce(B, '2099-12-31'),
             coalesce(C, '2099-12-31'),
             coalesce(D, '2099-12-31')
            )

处理所有的价值观 NULL :

select (case when coalesce(A, B, C, D) is not null
             then least(coalesce(A, '2099-12-31'),
                        coalesce(B, '2099-12-31'),
                        coalesce(C, '2099-12-31'),
                        coalesce(D, '2099-12-31')
                       )
        end)

相关问题