Snowflake cloud data platform 如何在Snowflake的内部SELECT语句中使用声明的变量? 如何在alias中为列使用SELECT Sub查询?
这是我的剧本:-Snowflake cloud data platform 如何在Snowflake的内部SELECT语句中使用声明的变量? 如何在alias中为列使用SELECT Sub查询?,snowflake-cloud-data-platform,snowflake-task,Snowflake Cloud Data Platform,Snowflake Task,这是我的剧本:- /*Declaring variables:*/ SET period= '3'; SET smryseg=concat('sku',$period,'_smry'); SET spend= concat('sku',$period,'') /*Printing it:*/ SELECT $period; /* #O/P: 3 */ SELECT $smryseg; /* #O/P: sku3_smry */
/*Declaring variables:*/
SET period= '3';
SET smryseg=concat('sku',$period,'_smry');
SET spend= concat('sku',$period,'')
/*Printing it:*/
SELECT $period; /* #O/P: 3 */
SELECT $smryseg; /* #O/P: sku3_smry */
SELECT $spend; /* #O/P: sku3_spend */
/*now I want to use this variable in my INNER SELECT query:*/
create table IDENTIFIER ($smryseg) as
SELECT sum(spend) as (SELECT $spend)
FROM my_table;
在这里,最后一个查询给了我一个错误,我还尝试使用IDENTIFIER、CONCAT、substring、$、删除括号等等。
我只想将“sum(spend)”列的名称获取为“sku3_spend”,即动态格式您可以在以后重命名该列。下面是一个独立的示例:
set spend_col='sku3_spend';
create or replace table t as select sum(spend) as x from values(1),(2),(3) s(spend);
alter table t rename column x to identifier($spend_col);
更新
可以在对象中存储动态命名的列:
set spend_col='sku3_spend';
create or replace table t as
select object_construct($spend_col, sum(spend)) data
from values(1),(2),(3) s(spend);
select data:sku3_spend from t;
我已经试过了,它也能用,但如果我只能选择访问它呢?另外,我不想创建另一个我已经创建的表。顺便说一句,谢谢。您是否可以
选择sum(spend)作为值,$spend作为标签…
?或者动态SQL。这就是我所得到的。实际上还有一个想法——在对象列中存储命名可变的列。我在答案上加了一个例子。希望这能有所帮助。仔细看看你对美元支出的定义。虽然注释显示其值为“sku3_-spend”,但定义实际上将其设置为“sku3”。您的concat在末尾有一个空白字符串。列名实际上是“sku3\U支出”吗?