在 redshift 中声明变量

Aja*_*mar 2 amazon-redshift

背景

我一直在使用 Amazon Redshift 来执行查询。我知道之前有人提出过与此相关的问题。但我不明白如何合并 UDF。

我想分配一个具有特定值的临时变量。我想这样做以使我的脚本动态化。例如——这是我编写代码的常用方式。

SELECT * FROM transaction_table WHERE invoice_date >= '2013-01-01' 
AND invoice_date <= '2013-06-30';
Run Code Online (Sandbox Code Playgroud)

我想做的是...

就像您将在下面看到的那样。我相信 SQL Server 有一个声明变量可以做这种事情。

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;
Run Code Online (Sandbox Code Playgroud)

这样我就不必深入搜索我的脚本。我可以在顶部添加一个 set 语句并对其进行更改。

非常欢迎您的反馈。

moe*_*tel 5

不幸的是,Redshift 中没有变量。但是,您可以通过创建临时表并按如下方式引用它来获得类似变量的行为:

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
;
Run Code Online (Sandbox Code Playgroud)