sql - 在没有循环和游标的临时表中插入日期范围

标签 sql sql-server

我有一个临时表,我需要在其中插入两个日期范围之间的所有年份。例如,如果日期范围是从 2010 年到 2018 年,那么表格将有

2010
2011
2012
2013
2014
2015
2016
2017
2018

任何人都有任何查询,我可以将这些值插入到临时表中,而无需使用 while 循环或游标。

最佳答案

使用递归 CTE。像这样

DECLARE @Min INT=2010,@Max INT=2018
;WITH CTE
AS
(
    SELECT
        MyData = @MIn

    UNION ALL

    SELECT
        MyData = MyData+1
        FROM CTE
            WHERE MyData < @Max
)
SELECT
    *
    FROM CTE

结果

enter image description here

关于sql - 在没有循环和游标的临时表中插入日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48092639/

相关文章:

sql - 数据库架构规范化违规

mysql - 选择一列,然后再次随机插入该列

sql - 为什么指定 ROWNUM 时的 SQL 查询速度比在 WHERE 子句中指定日期范围时慢

c# - 比较内存中的 2 个无序记录集

sql-server - 使用新序列更新聚合表

sql - GUID 字段的唯一约束是否会导致性能损失

mysql - 如何将select语句的结果合并到不同数据库的其他表

sql - 统计一个字符在 Oracle SQL 中出现的次数

sql-server - SQL Server 替换中忽略大小写

sql-server - 防止从 SSMS 导出的文件中的行受到影响