Ich habe eine große SQL Server 2012-Datenbank, die ich 3 Tabellen abfragen, um eine Ergebnismenge von 5 Feldern zu erstellen.Iterative Union ALL
Ich möchte diese Abfrage in einer WHILE - Schleife und "UNION ALL" die in jeder Schleife erhaltenen Ergebnismengen wiederholen. Diese Iteration wird auf einer Variablen liegen: @this_date, die in den letzten 6 Jahren erhöht wird und am heutigen Datum aufhört.
Bei jeder Iteration wird durch SELECT eine andere Ergebnismenge erhalten.
So wie folgt Ich versuche, die gespeicherte Prozedur zu kodieren:
Declare @the_date as Date,
@to_date as Date
-- I setup the above dates, @the_date being 6 years behind @to_date
-- Want to loop for each day over the 6-year period
WHILE (@the_date <= @to_date)
BEGIN
-- the basic select query looks like this
Select Table1.Field-1, Table2.Field-2 ...
FROM Table1
Inner Join Table2 ...
On (..etc.. )
-- the JOIN conditions are based on table.attributes which are compared with
-- @the_date to get a different result set each time
-- now move the date up by 1
DateAdd(Day, +1, @the_date)
-- want to concatenate the result sets
UNION ALL
END
Das gibt mir oben eine Fehler Syntax:
Incorrect syntax near the keyword 'Union'.
Irgendwelche Ideen auf eine Lösung für mein Problem zu begrüßen wäre - Vielen Dank.
Ergebnis aus der Schleife in eine Tabelle variabel einfügen und daraus auswählen. – artm
Was möchten Sie erreichen? Willst du die Aufzeichnungen von '@ This_date' und 6 Jahren nach ihm? Wenn Sie Ihr Ziel klar formulieren können, kann ich eine Antwort geben, die kein Looping beinhaltet. –
Wie wird '@ this_date' in Ihrer Anfrage verwendet? – Squirrel