首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BigQuery中将列转置为行

在BigQuery中将列转置为行
EN

Stack Overflow用户
提问于 2021-11-03 08:41:23
回答 1查看 149关注 0票数 1

对于BigQuery,如何转置列'Ds Hrc Shm','Ds Orc Cwp‘...将“sku”中的行转换为列,并使其中的值保持相同。

从…

代码语言:javascript
复制
   SKU     | Ds Hrc Shm  | Ds Orc Cwp  | Ds Orc Mwp  
DB-MIX-HTS        1             1              1
DB-ORC-TUS        0             1              1

转到

代码语言:javascript
复制
          DB-MIX-HTS | DB-ORC-TUS 
Ds Hrc Shm      1           0
Ds Orc Cwp      1           1
Ds Orc Mwp      1           1

我应该使用pivot / unvipot还是任何简单的方法?

我尝试使用pivot,但无法在IN中声明列标题

代码语言:javascript
复制
SELECT *
FROM
(
SELECT `manual_input.sku_translations`.`ds_hrc_shm` AS `ds_hrc_shm`, 
`manual_input.sku_translations`.`sku` AS `sku_1`,
 FROM `manual_input.sku_translations`
 ) 
 PIVOT
(
 SUM(`ds_hrc_shm`) FOR `sku_1` IN (['DB-ORC-TWS'], ['DB-MIX-SGT'])
 ) 

Here's the sample of data

EN

回答 1

Stack Overflow用户

发布于 2021-11-03 17:12:02

考虑下面的方法

代码语言:javascript
复制
select * from (
  select * replace(replace(SKU, '-', '_') as SKU)
  from `manual_input.sku_translations`
  unpivot (value for col in (`Ds Hrc Shm`, `Ds Orc Cwp`, `Ds Orc Mwp`))
)
pivot (any_value(value) for SKU in ('DB_MIX_HTS', 'DB_ORC_TUS'))    

如果要应用于问题中的样本数据,则

代码语言:javascript
复制
with `manual_input.sku_translations` as (
  select 'DB-MIX-HTS' SKU, 1 as `Ds Hrc Shm`, 1 as `Ds Orc Cwp`, 1 as `Ds Orc Mwp` union all
  select 'DB-ORC-TUS', 0, 1, 1
)           

输出为

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69821868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档