Mam następujące zapytanie SQL:SQL Server dla każdego Loop
DECLARE @MyVar datetime = '1/1/2010'
SELECT @MyVar
To naturalnie zwraca '1/1/2010'.
Co chcę zrobić, to mieć listę terminów, powiedzmy:
1/1/2010
2/1/2010
3/1/2010
4/1/2010
5/1/2010
Następnie chcę dla każdej z liczb i uruchomić kwerendę SQL.
coś jak (Pseudokod):
List = 1/1/2010,2/1/2010,3/1/2010,4/1/2010,5/1/2010
For each x in List
do
DECLARE @MyVar datetime = x
SELECT @MyVar
Więc będzie to powrót: -
1/1/2010 2/1/2010 3/1/2010 4/1/2010 5/1/2010
Chcę, aby to zwróciło dane jako jeden zestaw wyników, a nie wiele zestawów wyników, więc może potrzebować użyć pewnego rodzaju związku na końcu zapytania, więc każda iteracja pętli na Następny .
edit
Mam duże kwerendę, która przyjmuje parametr „na bieżąco”, muszę go uruchomić 24 razy, za każdym razem z określonym na dzień, który muszę być w stanie dostarczyć (te daty będą dynamiczne) Chcę uniknąć powtarzania mojego zapytania 24 razy z łączącymi się łączami, tak jakbym musiał wrócić i dodać dodatkowe kolumny, byłoby to bardzo czasochłonne.
Czy możesz wyjaśnić, dlaczego musisz to zrobić? 95% czasu, w którym potrzebujesz struktury pętli w tSQL, prawdopodobnie robisz to źle. – JohnFx
Dlaczego nie utworzyć tabeli, w której można wypełnić datami, które mają być uruchomione przeciwko temu. Jest prawie na pewno lepszy sposób na to, niż przeglądanie stałych wartości zakodowanych na stałe. – JohnFx
Daty podane w przykładzie są kolejnymi miesiącami. Czy to jest reguła, czy też musisz być w stanie uruchomić dla dowolnego zestawu dat? Czy istnieje powód, dla którego nie można edytować dużego zapytania, aby wybrać zakres dat lub zestaw dat zamiast jednej daty? Jeśli koniecznie musisz przejść przez iteracje (wbrew dobrej rady podanej powyżej), możesz rozważyć użycie kursora. – JAQFrost