SQL server with方法修改

SQL server with方法修改,SQL 2008 不支持 with方法 需要改写下:

复制代码
WITH MonthsCTE AS (
4		SELECT @StartDate AS MonthStart
5		UNION ALL
6		SELECT DATEADD(month, -1, MonthStart)
7		FROM MonthsCTE
8		WHERE MonthStart > @EndDate
9	)
10
11	INSERT INTO dbo.dim_year_quarter_month ([dt],[year],[quarter],[ym]) 
12	SELECT 
13	    @DateThreshold as dt,
14		DATEPART(YEAR, MonthStart) AS year,
15		DATEPART(QUARTER, MonthStart) AS quarter,
16		CONVERT(varchar(7), MonthStart, 120) as ym
17	FROM MonthsCTE
18	WHERE MonthStart <= @StartDate
19	ORDER BY MonthStart DESC

改为

-- 创建临时表存储结果

CREATE TABLE #TempMonths (

MonthStart DATE

)

-- 使用WHILE循环填充临时表

WHILE @CurrentDate >= @EndDate

BEGIN

INSERT INTO #TempMonths (MonthStart)

VALUES (@CurrentDate);

SET @CurrentDate = DATEADD(month, -1, @CurrentDate);

END

-- 插入新数据

INSERT INTO dbo.dim_year_quarter_month([dt], [year], [quarter], [ym])

SELECT

@DateThreshold as dt,

DATEPART(YEAR, tm.MonthStart) AS year,

DATEPART(QUARTER, tm.MonthStart) AS quarter,

CONVERT(varchar(7), tm.MonthStart, 120) as ym

FROM #TempMonths tm

WHERE tm.MonthStart <= @StartDate

ORDER BY tm.MonthStart DESC

-- 清理临时表

DROP TABLE #TempMonths

相关推荐
vortex5几秒前
Tomcat 日志文件名的命名规范
java·tomcat
little_xianzhong9 分钟前
Java 日期字符串万能解析工具类(支持多种日期格式智能转换)
java·开发语言
RestCloud11 分钟前
ETL 不只是数据搬运工:如何实现智能转换与清洗?
数据库·api
刘 大 望11 分钟前
传输层:UDP/TCP协议
java·网络·网络协议·tcp/ip·udp·信息与通信
lu9up14 分钟前
因表并行引发的血案【故障处理案例】
数据库·oracle·dba
小胖墩有点瘦15 分钟前
【基于协同过滤的校园二手交易平台】
java·vue·毕业设计·springboot·计算机毕业设计·协同过滤·校园二手交易平台
我真的是大笨蛋21 分钟前
G1 垃圾收集器深入解析
java·jvm·笔记·缓存
ytadpole30 分钟前
揭秘 XXL-JOB 调度:从代码深处看路由策略的精妙设计
java·后端
27^×38 分钟前
Linux 常用命令速查手册:从入门到实战的高频指令整理
java·大数据·linux
学Java的bb41 分钟前
后端Web实战-Spring原理
java·spring boot·spring