sql - 如何通过在 postgres 中生成月份来复制行
问题描述
我有一张包含客户详细信息的表格 表格客户:
CID CNAME
1 Abc
2 Def
3 Ghi
我想在此表中添加一个月列,并在选择语句中复制每个月的所有行。必须根据当前日期生成月份。
预期输出
Month CID CNAME
2019-01-01 1 Abc
2019-01-01 2 Def
2019-01-01 3 Ghi
2019-02-01 1 Abc
2019-02-01 2 Def
2019-02-01 3 Ghi
2019-03-01 1 Abc
2019-03-01 2 Def
2019-03-01 3 Ghi
解决方案
您正在寻找generate_series()
. 我会这样做:
select gs.month, t.*
from t cross join
generate_series('2019-01-01'::date, '2019-03-01'::date, interval '1 month') gs(month)
order by gs.month, t.cid;
推荐阅读
- javascript - 使用字符串创建 JSON 对象
- c# - 如何配置 PasswordHasher
? - c# - 尝试将项目添加到单链表末尾时出现 NullReferenceException
- c++ - 在 QTableWidget 中设置 QComboBox 的当前索引
- c# - ServiceStack:是否可以在 URL 中指定基于上下文的路由?
- sql - 将整数列转换为月份类型 MM
- python - 从 alpine 在 docker 中构建 zeep
- ruby-on-rails - ActiveStorage::InvariableError in Home#index
- javascript - 如果超过一定的文件大小限制,如何创建更多的 javascript 块?
- rust - 函数参数中的可变借用