首页 > 解决方案 > 反透视取自另一个表的列

问题描述

我有超过 500 列需要用于反透视。

select col1 , col2 , col3 
from ( select * from table )
unpivot (col3 for col2 in ('value', 'value2',....'value788'))

因此,我没有编写所有这些列,而是使用了包含所有这些值的表的内部选择。

select col1 , col2 , col3 
from ( select * from table )
unpivot (col3 for col2 in (select value_col from val_table))
but it is throwing error. unexpected select

任何建议

标签: sqlsnowflake-cloud-data-platform

解决方案


这已经出现了几次,所以我想到了一个 JavaScript 存储过程。但是,劳动密集型部分正在构建和更改in条款中的值。为此,一个简单的 SQL 生成器效果很好。下面是在 Snowflake 样本数据中使用国家表的示例:

use schema "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1";

select  '(' || listagg('\'' || N_NAME || '\'', ',') || ')'
from    NATION

推荐阅读