Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 如何在Snowflake的内部SELECT语句中使用声明的变量? 如何在alias中为列使用SELECT Sub查询?_Snowflake Cloud Data Platform_Snowflake Task - Fatal编程技术网

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支出”吗?