有条件地创建临时文件 table

Conditionally create temp table

我正在使用 Netezza,需要根据变量的值有条件地创建临时 table table1,例如 $var

通常我会在 Netezza 中创建一个临时文件 table,如下所示。

CREATE TEMP TABLE table1 AS
(
 -- statement to fill the data
) DISTRIBUTE ON RANDOM;

假设我有一个像下面这样的 table t1 和一些数据

+---------+
| val     |
+---------+
|       0 |     
|       4 |    
|       8 |    
|      12 |  
|      16 | 
|      20 |
+---------+

基于 $var 的值,我想从 table select val 并包含在临时 table table1 中。

下面是我的代码起点。我需要一些关于语句的帮助来应用条件。

CREATE TEMP TABLE table1 AS
(
 SELECT * FROM
    (
 -- when `$var` == `all`
  SELECT * FROM t1
-- when `$var` == `above_mean`
  SELECT * FROM t1
  WHERE val > mean(val)
   )
) DISTRIBUTE ON RANDOM;

PostgreSQL 兼容的 Netezza 解决方案会很有帮助。

我不知道变量 var 是什么类型,或者它在您的 create table 语句中如何表示,但您应该能够将两者结合起来查询:

CREATE TEMP TABLE table1 AS (
    SELECT * FROM t1 WHERE var = 'all'
    UNION ALL
    SELECT * FROM t1 WHERE var = 'above_mean' AND val > mean(val)
) DISTRIBUTE ON RANDOM;