Как использовать объявленные переменные в инструкции INNER SELECT в Snowflake? - PullRequest
1 голос
/ 04 марта 2020

Как использовать подзапрос SELECT в псевдониме для столбца?

Вот мой сценарий: -

/*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 , SUBSRING , $ , , удаляя скобки и многое другое. Я просто хочу, чтобы имя столбца sum (трата) было получено как sku3_spend, т.е. в формате Dynami c

1 Ответ

1 голос
/ 04 марта 2020

Вы можете переименовать столбец впоследствии. Вот отдельный пример:

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;
...