如何在Amazon Redshift中选择多行填充常量?

Inf*_*892 8 sql postgresql amazon-redshift set-returning-functions

我已经尝试过常见的PostgreSQL答案,但似乎它不适用于Redshift:

SELECT  * FROM VALUES (1) AS q (col1);

ERROR: 42883: function values(integer) does not exist
Run Code Online (Sandbox Code Playgroud)

我需要这个因为某些原因我无法使用UNION ALL.任何帮助将不胜感激.

Erw*_*ter 16

正确的Postgres语法是:

SELECT * FROM (VALUES (1)) AS q (col1);
Run Code Online (Sandbox Code Playgroud)

缺少一组括号.
但似乎Redshift甚至不支持VALUES外面的表达INSERT(就像现代的Postgres一样).所以,对于单行:

SELECT * FROM (SELECT 1) AS q (col1);
Run Code Online (Sandbox Code Playgroud)

对于多行(不使用UNION ALL类似请求),您可以使用临时表.注意(根据文件):

临时表会在创建它的会话结束时自动删除.

CREATE TEMP TABLE q(col1 int);
INSERT INTO q(col1)
VALUES (1), (2), (3);

SELECT  * FROM q;
Run Code Online (Sandbox Code Playgroud)

如果UNION ALL是一个选项:

SELECT 1 AS col1
UNION ALL SELECT 2
UNION ALL SELECT 3;
Run Code Online (Sandbox Code Playgroud)