如何联接generate_series和数组



我想使用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来生产笛卡尔乘积。

相关内容

  • 没有找到相关文章

最新更新