Es muss eine IN-Klausel mit einer Liste von Daten darin erstellt werden. Die Liste muss in absteigender Reihenfolge sein. Ich habe eine Variable mit dem Namen @cols und ich versuche es mit diesem Code zu füllen:Verwenden einer While-Schleife in SQL zum Erstellen einer Variablen
declare @end date='2016/05/30'
declare @begin date = DATEADD(month, DATEDIFF(month, 0, @end), 0) ;
declare @curdate date = @end; -- start on the last day
print @curdate;
print @begin;
DECLARE @cols NVARCHAR (MAX)
while @curdate >[email protected] -- goes from end of the month to beginning of the month
begin
select @cols = @cols + ',[' + CONVERT(NVARCHAR, @curdate, 106) + ']';
select @curdate = DATEADD(DAY,-1,@curdate) -- subtract a day
end
print @cols;
print @curdate;
print @begin;
Ich hoffe 5/30/16 zu bekommen, 5/29/16, 5/28/16 etc (richtig formatiert natürlich). Der Code läuft ohne Fehler aber @cols ist immer leer.
Sie sollten sich mit einer Tally-Tabelle vertraut machen. Sie sollten in solchen Fällen statt einer Schleife verwenden. http://www.sqlservercentral.com/articles/T-SQL/62867/ –