在 redshift 中声明变量
Declaring variables in redshift
背景
我一直在使用 Amazon Redshift 来执行我的查询。
我知道之前有人问过这个问题。但是我不明白如何合并UDF。
我想分配一个具有特定值的临时变量。
我想这样做以使我的脚本动态化。例如-这是我的
通常的写代码方式。
SELECT * FROM transaction_table WHERE invoice_date >= '2013-01-01'
AND invoice_date <= '2013-06-30';
我想做的是...
类似于您将在下面看到的内容。我相信 SQL 服务器有一个声明变量可以做这种事情。
SET start_date TO '2013-01-01';
SET end_date TO '2013-06-30';
SELECT * FROM transaction_table WHERE invoice_date >= start_date
AND invoice_date <= end_date;
这样我就不必在脚本中深入搜索了。我可以有一套
在顶部声明并更改它。
非常欢迎您的反馈。
不幸的是,Redshift 中没有变量。但是,您可以通过创建临时 table 并按如下方式引用它来获得类似变量的行为:
CREATE TEMPORARY TABLE _variables AS (
SELECT
'2013-01-01'::date as start_date
, '2013-06-30'::date as end_date
);
SELECT
transaction_table.*
FROM
transaction_table, _variables
WHERE
invoice_date >= start_date
AND
invoice_date <= end_date
;
背景
我一直在使用 Amazon Redshift 来执行我的查询。 我知道之前有人问过这个问题。但是我不明白如何合并UDF。
我想分配一个具有特定值的临时变量。 我想这样做以使我的脚本动态化。例如-这是我的 通常的写代码方式。
SELECT * FROM transaction_table WHERE invoice_date >= '2013-01-01'
AND invoice_date <= '2013-06-30';
我想做的是...
类似于您将在下面看到的内容。我相信 SQL 服务器有一个声明变量可以做这种事情。
SET start_date TO '2013-01-01';
SET end_date TO '2013-06-30';
SELECT * FROM transaction_table WHERE invoice_date >= start_date
AND invoice_date <= end_date;
这样我就不必在脚本中深入搜索了。我可以有一套 在顶部声明并更改它。
非常欢迎您的反馈。
不幸的是,Redshift 中没有变量。但是,您可以通过创建临时 table 并按如下方式引用它来获得类似变量的行为:
CREATE TEMPORARY TABLE _variables AS (
SELECT
'2013-01-01'::date as start_date
, '2013-06-30'::date as end_date
);
SELECT
transaction_table.*
FROM
transaction_table, _variables
WHERE
invoice_date >= start_date
AND
invoice_date <= end_date
;