Ich versuche, dynamische SQL zu lernenLearning Dynamische SQL
Ich habe ein grundlegendes Beispiel einrichten, und ich bin fest, ich verstehe nicht, warum die @Month Variable wird nicht Update mit jeder Schleife. Hier
ist das Beispiel, das ich gemacht:
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)
Die Ergebnisse:
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
Ich suche die das Monthname von Januar bis Dezember
Warum funktioniert der Monatsname nicht zu erzeugen, Aktualisieren Sie jede Schleife? Macht mich verrückt und ich kann nicht warten, bis ich morgen zur Arbeit komme, um meinen Chef zu fragen. Müssen heute Nacht schlafen.
sehr geschätzt.
Blick auf die SQL, die produziert wird und schließen es in der Frage. Ich bin mir ziemlich sicher, dass das Problem offensichtlich ist, wenn Sie '@ SQL' ausdrucken. –
Hier ist die Ausgabe Abfrage, Es ist nicht so offensichtlich für mich .. Wählen Sie 1 als M, 'Januar' als Monat Union Alle wählen Sie 2 als M, 'Januar' als Monat Union Alle wählen Sie 3 als M, 'Januar 'als Monat Union Alle wählen Sie 4 als M,' Januar 'als Monat Union All .... usw. Ich weiß nicht, warum die @Month nicht aktualisiert –