首页 > 解决方案 > GBQ Unpviot Columns 分为单列和多行

问题描述

大家好 试图找出与上一个 问题类似的解决方案,但解决方案略有不同。我正在尝试找出一种方法来取消旋转不同数量的列并将结果放在一个列中

输入这将是一个 sql 表 (tbl_fruit),如图所示

选择 * 从 tbl_fruit

在此处输入图像描述

输出

在此处输入图像描述

潜在的解决方案 根据链接的问题,我正在尝试修改该解决方案,但不断出现错误

select `Group`, split(kv, ':')[offset(0)] output
from tbl_fruit t,
unnest((select as struct t.* except(`Group`))) kv
where kv[offset(1)] != '0'
group by `Group`

标签: google-bigquerytransposeunpivotunnest

解决方案


select `Group`, split(kv, ':')[offset(0)] output
from `project.dataset.table` t,
unnest(split(translate(to_json_string((select as struct t.* except(`Group`))), '{}"', ''))) kv
where split(kv, ':')[offset(1)] != '0'    

带输出

在此处输入图像描述


推荐阅读