У меня есть следующий SQL-запрос:SQL Server для каждого цикла
DECLARE @MyVar datetime = '1/1/2010'
SELECT @MyVar
Это, естественно, возвращает '1/1/2010'.
То, что я хочу сделать, это список дат, скажем:
1/1/2010
2/1/2010
3/1/2010
4/1/2010
5/1/2010
Тогда я хочу ДЛЯ КАЖДОЙ по номерам и запустить SQL Query.
Что-то вроде (псевдокод):
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
Так заносить бы: -
1/1/2010 2/1/2010 3/1/2010 4/1/2010 5/1/2010
Я хочу, чтобы это возвращало данные как один набор результатов, а не несколько наборов результатов, поэтому мне может потребоваться использование какого-либо объединения в конце запроса, поэтому каждая итерация петлевого объединения на следующий ,
редактировать
У меня есть большой запрос, который принимает параметр «на сегодняшний день», мне нужно, чтобы запустить его в 24 раза, каждый раз с конкретным на сегодняшний день, который я должен быть в состоянии поставлять (эти даты будут динамическими). Я хочу избежать повторения моего запроса 24 раза, когда все союзники присоединяются к ним, как если бы мне нужно было вернуться и добавить дополнительные столбцы, это было бы очень трудоемким.
Не могли бы вы объяснить, зачем вам это нужно? 95% времени, когда вам нужна структура циклов в tSQL, вы, вероятно, ошибаетесь. – JohnFx
Почему бы не создать таблицу, в которой вы можете заполнить даты, которые вы хотите использовать для этого. Существует почти наверняка лучший способ сделать это, чем просматривать жестко установленные постоянные значения. – JohnFx
Даты в вашем примере являются последовательными по месяцам. Это правило, или вам нужно иметь возможность запускать произвольный набор дат? Есть ли причина, по которой вы не можете редактировать большой запрос, чтобы выбрать диапазон дат или набор дат, а не одну дату? Если вам абсолютно необходимо пройти итерации (против хороших советов, приведенных выше), тогда вам может понадобиться использовать курсор. – JAQFrost