在Redshift中将值存储在变量中

时间:2014-05-22 06:34:00

标签: postgresql amazon-redshift

我试图将两个变量存储在两个变量中。

例如:

var1=$(select max(columnA) from table)
var2=$(select min(columnA) from table)

我可以合并上述语句并执行相同的一次并将最大值存储在var2中的var1和min值中吗?

我正在使用Redshift DB。

3 个答案:

答案 0 :(得分:5)

我知道这个问题已经过时了,但我也需要找到问题的解决方案。经过多次游戏后,我想出了解决方案。

-- Create a temp table for storing the variables
create temp table tmp_vars (
  x int,
  y date
);

-- Store the values in the temp table
insert into tmp_vars (x, y) values
  ((select max(id) from table1), 
   (select max(date) from table2));  

-- Use the variable in a query
select *
from some_table
where date >= (select y from tmp_vars limit 1);

-- Drop the temp table
drop table tmp_vars;

答案 1 :(得分:1)

可悲的是,AWS Redshift不支持变量或任何类型的过程功能(PL / pgSQL),如触发器,存储过程/函数等。

答案 2 :(得分:0)

您无法在Redshift中定义变量。

但你可以做到以下几点:

WITH
  part1 as (select max(columnA) myMax from table),
  part2 as (select min(columnA) myMin from table)
SELECT part1.myMax, part2.myMin from part1, part2