我努力学习动态SQL学习的动态SQL
我已经建立了一个基本的例子,我坚持,我不明白为什么每次循环的@Month变量不会更新。
这里是我所做的例子:
declare @M int = 1
declare @SQL varchar(max) = ''
declare @Cnt int = 1
declare @Month varchar(25) = (datename(m, '2016-' + convert(varchar(2), @M) + '-01'))
while @Cnt <= 12
begin
set @SQL = @SQL + 'select ' + convert(varchar(25), @M) + ' as M, ''' + @Month + ''' as Month'
if @Cnt <> 12 set @SQL = @SQL + ' Union All '
set @Cnt = @Cnt + 1
set @M = @M + 1
end
exec (@SQL)
结果:
M Month
1 January
2 January
3 January
4 January
5 January
6 January
7 January
8 January
9 January
10 January
11 January
12 January
我期待产生的MONTHNAME从一月到
月为什么每月名称不更新每个循环? 让我生气,我不能等到明天上班去问我的老板。今晚需要睡觉。
非常感谢。
看就是生产,包括它在问题中。我很确定,如果你打印出@ @ SQL,这个问题会很明显。 –
这里是输出查询,它对我不是很明显..选择1作为M,'1月'作为月份 联盟全部 选择2作为M,'1月'作为月份 联盟全部 选择3作为M,'1月'as Month Union All 选择4作为M,'1月'作为月份 联盟所有....等等我不知道为什么@Month没有更新 –