【发布时间】:2012-10-15 15:54:44
【问题描述】:
假设,我有一个包含 C 列和 N 行的表格。我想生成一个选择语句,表示该表的“连接”,其数据范围包括 M 天。生成的结果集应该有 C+1 列(最后一个是日期)和 NXM 行。
简单的例子来澄清事情: 给定下表A:
select * from A;
avalue |
--------+
"a" |
日期范围是 2012 年 10 月 10 日到 12 日,我想要以下结果集:
avalue | date
--------+-------
"a" | 2012-10-10
"a" | 2012-10-11
"a" | 2012-10-12
(这是我最终计算任何一天的库存水平所需的垫脚石,给定起始值和增量)
【问题讨论】:
-
你对 C、N 和 M 的使用让我头晕目眩。您要动态查询吗?
-
但不管 RDBMS,我建议使用日历表(例如,如果您的业务模型需要,您也可以将其用于工作日管理)和简单的笛卡尔积将日历表放到表中一个
-
谢谢,我试图避免使用日历表。我正在使用 PostgreSQL 顺便说一句。
-
@foampile:PostgreSQL 很少需要日历表,请改用
generate_series。 -
似乎是合法的功能。虽然我不是 PostgreSQL 用户,但我会检查一下
标签: sql postgresql date