sql - 反透视取自另一个表的列
问题描述
我有超过 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
任何建议
解决方案
这已经出现了几次,所以我想到了一个 JavaScript 存储过程。但是,劳动密集型部分正在构建和更改in
条款中的值。为此,一个简单的 SQL 生成器效果很好。下面是在 Snowflake 样本数据中使用国家表的示例:
use schema "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1";
select '(' || listagg('\'' || N_NAME || '\'', ',') || ')'
from NATION
推荐阅读
- angularjs - 选择两种方式绑定在 angularjs 1.4.0 中不起作用
- mysql - 如何在 MySQL Group By 查询中将日期列值转换为列名
- angular - 如何在不将所有代码更改为 Promise 的情况下等待 rxjs Observable
- python - 如何修复模态不显示?
- java - 为什么 Spliterators.spliteratorUnknownSize() 不是后期绑定?
- ruby-on-rails - Rails CarrierWave - 能够保存远程 url 图像但无法将本地图像文件保存到数据库和 AWS S3
- java - 在 Windows 中使用 SHARE 属性对文件进行内存映射(因此文件不会被锁定以防删除)
- visual-studio-code - 在 VS Code 终端中打印制表符 (\t) 字符
- haskell - 当似乎正确指定时,如何修复 Cabal 中的“找不到模块”错误?
- javascript - 如何让 ESLint 在 VSCode 中对 HTML 文件进行 lint?