[英]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.