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

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

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

  1. A B C D
  2. 2015-01-01 2015-01-05 Null 2013-01-01

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

guz6ccqo

guz6ccqo1#

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

  1. select least(coalesce(A, '2099-12-31'),
  2. coalesce(B, '2099-12-31'),
  3. coalesce(C, '2099-12-31'),
  4. coalesce(D, '2099-12-31')
  5. )

处理所有的价值观 NULL :

  1. select (case when coalesce(A, B, C, D) is not null
  2. then least(coalesce(A, '2099-12-31'),
  3. coalesce(B, '2099-12-31'),
  4. coalesce(C, '2099-12-31'),
  5. coalesce(D, '2099-12-31')
  6. )
  7. end)

相关问题