sql - 在 T-SQL 中生成日期序列

标签 sql tsql date select recursive-query

在购买记录中,我想生成一个基准日期 +/-12 个月的序列

Client Date 
Joe    2020-03-15
Maria  2019-11-01

所以期望的结果是

Client Date 
Joe    2019-03-15
Joe    2019-04-15
.
.
.
Joe    2020-03-15
.
.
.
Joe    2021-02-15
Joe    2021-03-15
Maria  2018-11-01
Maria  2018-12-01
.
.
.
Maria  2019-11-01
.
.
.
Maria  2020-10-01
Maria  2020-11-01

如何实现?

最佳答案

一个选项使用递归查询:

with cte as (
    select client, dateadd(month, -12, date) date, 0 lvl from mytbale
    union all
    select client, dateadd(month, 1, date), lvl + 1 from cte where lvl < 24
)
select * from cte order by client, date

关于sql - 在 T-SQL 中生成日期序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62221569/

相关文章:

mysql - SQL-多次重复 1 列

sql - 删除数据库后事务日志传送备份作业仍保留

sql-server - 如何获取 SQL Server 查询返回的一组多行中的 n 个最常见的单词?

sql - 对以下结果进行排序的最佳方法是什么

sql-server - 单元测试 SQL

javascript - 设置发布日期格式并添加类别

sql - 如何在列的不同值上联接两个表?

mysql - 在查询中输入包含 "-"的列时出错

javascript - 创建 3 个选择框(月、日、年),为每个选项创建 php 循环选项,并在 `days` 更改时使用 Javascript 更改 `months` 的选项

date - VMWare 如何防止虚拟机更新其日期和时间