动态SQL 和while循环的复合使用,实现年度内每个月销售累计销售额问题
准备工作
创建数据表并插入数据
CREATE TABLE sales(年度 int , 月份 int ,销售额 int)
insert into sales values(2018,1,200),
(2018,2,300),(2018,3,500),
(2018,6,200),(2018,9,100),
(2019,1,200),(2019,2,200)
原表如下:
代码实现
declare @mydata date ='2018-01-01' --定义一个起始时间
declare @sql varchar(8000)='' --定义动态SQL变量,开始为空
select DATEADD(m,1,@mydata)
while @mydata <= cast(GETDATE() as date)
begin
set @sql=@sql +
'SELECT a.年份,'+str(month(@mydata))+' as 月份
,SUM(a.销售额) AS [年度累计销售]
FROM sales a
where a.月份 <= ' +str(month(@mydata))+ ' and a.年份 = ' +str(year(@mydata))