如何连接 generate_series 和一个数组

How to join generate_series and an array

我想使用 generate_series() 生成列列表并将其连接到特定数组(值列表,例如 [1, 2, 3]),我的预期结果如下所示:

Day        | Code
2019-08-01 |  1
2019-08-02 |  1
2019-08-03 |  1
2019-08-01 |  2
2019-08-02 |  2
2019-08-03 |  2
2019-08-01 |  3
2019-08-02 |  3
2019-08-03 |  3

这个查询:

SELECT generate_series(timestamp '2019-08-01'
                     , timestamp '2019-08-03'
                     , interval  '1 day') AS DAY, 1 AS CODE;

会给我结果:

Day        | Code
2019-08-01 |  1
2019-08-02 |  1
2019-08-03 |  1

那么如何更新查询以获得预期的结果?

这是产生您想要的结果的众多方法之一完全:

SELECT day::date, code
FROM   generate_series(timestamp '2019-08-01'
                     , timestamp '2019-08-03'
                     , interval  '1 day') day
CROSS JOIN unnest ('{1,2,3}'::int[]) code;  -- using an actual array here

重点是:您需要 CROSS JOIN 来生成笛卡尔积。