sql—使用配置单元标识列中是否重复相同的值

wecizke3  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(484)

我有一个配置单元表,它有一个名为datalist的列

XYZ_OLD
XYZ_NEW
ABC_OLD
EFG_OLD
EFG_NEW
PQR_NEW

我需要创建一个输出,它将标识列中不同时包含新名称和旧名称的所有名称

Value  Reason
ABC    Missing NEW
PQR    Missing OLD
XYZ    Contains Both NEW and OLD
EFG    Contains both NEW and OLD

任何关于sql/hiveql逻辑的建议/帮助都将不胜感激。

zbdgwd5y

zbdgwd5y1#

我想你可以做到:

select split(datalist, '_')[1],
       (case when sum(case when datalist like '%NEW' then 1 else 0 end) > 0 and
                  sum(case when datalist like '%OLD' then 1 else 0 end) > 0
             then 'BOTH'
             when sum(case when datalist like '%NEW' then 1 else 0 end) > 0 
             then 'NEW ONLY'
             else 'OLD ONLY'
         end)

from t
group by split(datalist, '_')[1];

相关问题