数据详情:
事实表:其中多个字段是字典code。
字典表:两列,字典code、字典value。
需求:
现在将事实表的字典code转换成字典value。
案例数据准备:
CREATE TABLE test_value (
id int,
k1 varchar(20) DEFAULT NULL,
k2 varchar(20) DEFAULT NULL,
k3 varchar(20) DEFAULT NULL
);
CREATE TABLE test_key_value (
ky varchar(20) DEFAULT NULL,
val varchar(20) DEFAULT NULL
);insert into test_value values (1,'a','b','c');
insert into test_value values (2,'d','e','f');
insert into test_value values (3,'g','h','i');insert into test_key_value values ('a','1');
insert into test_key_value values ('b','2');
insert into test_key_value values ('c','3');
insert into test_key_value values ('d','4');
insert into test_key_value values ('e','5');
insert into test_key_value values ('f','6');
insert into test_key_value values ('g','7');
insert into test_key_value values ('h','8');
insert into test_key_value values ('i','9');
实现逻辑:
select id
,max(case when k.k1= v.ky then v.val end) v1
,max(case when k.k2= v.ky then v.val end) v2
,max(case when k.k3= v.ky then v.val end) v3
from test_value k
left join test_key_value v
on (k.k1=v.ky or k.k2=v.ky or k.k3 = v.ky)
group by id
PS:原创博客,转载请注明出处。

本文介绍了如何在事实表中,利用字典表将多个字段的字典code转换为对应的字典value。通过创建示例数据,展示了在Hive和MySQL中,通过左连接和CASE WHEN语句实现字典转换的详细步骤。适用于数据清洗和转换场景。

4987

被折叠的 条评论
为什么被折叠?



