如何在SQL Server中按日期批量生成重复记录
在SQL Server中批量复制记录并按日期扩展
实现思路
生成目标日期范围内的所有日期,将原表中C列为2022-10-01的5条记录与每个日期做笛卡尔关联,批量插入新记录,仅替换C列的日期值。
具体SQL代码
假设你的表名为YourTable,执行以下语句即可完成需求:
-- 生成2022-10-01至2023-02-01的所有日期序列 WITH DateRange AS ( SELECT CAST('2022-10-01' AS DATE) AS DateValue UNION ALL SELECT DATEADD(DAY, 1, DateValue) FROM DateRange WHERE DateValue < '2023-02-01' ) -- 批量插入扩展后的记录 INSERT INTO YourTable (A, B, C, D, E) SELECT t.A, t.B, dr.DateValue, t.D, t.E FROM YourTable t CROSS JOIN DateRange dr WHERE t.C = '2022-10-01'; -- 仅针对原始的5条目标记录进行扩展
注意事项
- 如果表存在主键,需避免主键冲突:若主键是自增列则无需额外处理;若为业务字段,需生成唯一主键值后再插入。
- 若不想修改原表,可将
INSERT INTO YourTable替换为SELECT ... INTO NewExpandedTable,把结果插入到新表中。 - 调整
WHERE DateValue < '2023-02-01'可控制日期范围,当前语句包含起始和结束当天的日期。
内容的提问来源于stack exchange,提问作者Cassius Clay
相关产品推荐
相关产品推荐

