首页 > 解决方案 > SQL 行到列但不转置

问题描述

我们有一张关于识别数据的表格:

顾客号码 鉴别
101 护照-我们
101 执照
102 护照-英国
102 执照
102 出生证明
103 执照学习者

因此,一位客户可能以不同的数量/组合提交了多个其他标识。

我们追求的结果是:

顾客号码 护照 执照 出生证明
101 护照-我们 执照
102 护照-英国 执照 出生证明
103 执照学习者

因此,基本上采用确切的文本并将其放在后续列中。

我们知道的是:

我可能正在考虑使用 REGEXP_EXTRACT 进行三次自我加入。

想法?

标签: sqlhive

解决方案


你可以像这样使用纯 sql 来做到这一点:

select
  CustomerNumber,
  max(case when Identification like 'passport%' then Identification else null end) as Passport,
  max(case when Identification like 'Licence%' then Identification else null end) as Licence,
  max(case when Identification ='birth-cert' then Identification else null end) as BirthCertificate
from identification
group by CustomerNumber

推荐阅读