繁体   English   中英

Snowflake 将列名传递给 select 查询 - 单行子查询返回多于一行

[英]Snowflake Pass column names to select query - single-row subquery returns more than one row

需要找到一种方法来 select 仅来自数据表中在 PII 分类表中定义为非敏感的那些列。

我写了这个——

select (select col_name from PII_CLASSFCTN 
where TAG_VAL = 'NON-SENSITIVE') FROM TEST;

并得到一个错误单行子查询返回不止一行这是有道理的,但是我该如何重写这个 SQL?

我必须重写我的答案。 你不能用一个简单的 SQL 来做到这一点,但雪花脚本(新功能)可以帮助你。 这是一个示例演示:

create table PII_CLASSFCTN (col_name varchar, TAG_VAL varchar )
as select * from values 
('A1','NON-SENSITIVE'),
('A2','NON-SENSITIVE'),
('A3','SENSITIVE');

create table TEST ( A1 varchar, A2 varchar, A3 varchar ) 
as select * from values 
('Gokhan','SQL','Master'),
('Jack','SQL','Novice');

declare
  res RESULTSET;
  col_name varchar;
  select_statement varchar;
  c1 CURSOR for select col_name from PII_CLASSFCTN where TAG_VAL = 'NON-SENSITIVE';
begin
  select_statement := 'SELECT ';
  for rs in c1 do
     select_statement := select_statement || ' ' || rs.col_name || ',';
  end for;
  select_statement := RTRIM(select_statement, ',' ) || ' FROM TEST';
  res := (execute immediate :select_statement);
  return table(res);
end;


+--------+-----+
|   A1   | A2  |
+--------+-----+
| Gokhan | SQL |
| Jack   | SQL |
+--------+-----+

有关雪花脚本的更多信息: https://docs.snowflake.com/en/developer-guide/snowflake-scripting/index.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM