如何连接 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
来生成笛卡尔积。
我想使用 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
来生成笛卡尔积。