Tengo la siguiente consulta SQL:SQL Server para cada lazo
DECLARE @MyVar datetime = '1/1/2010'
SELECT @MyVar
Esto devuelve de forma natural '1/1/2010'.
Lo que quiero hacer es tener una lista de fechas, dicen:
1/1/2010
2/1/2010
3/1/2010
4/1/2010
5/1/2010
entonces quiero PARA CADA través de los números y ejecutar la consulta SQL.
Algo así como (pseudocódigo):
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
lo que esta sería volver: -
1/1/2010 2/1/2010 3/1/2010 4/1/2010 5/1/2010
Quiero que esto devuelva los datos como un conjunto de resultados, no múltiples conjuntos de resultados, por lo que puede necesitar algún tipo de unión al final de la consulta, por lo que cada iteración del lazo se une a el siguiente .
edición
Tengo una consulta de gran tamaño que acepta un parámetro 'hasta la fecha', tengo que ejecutarlo 24 veces, cada vez con un determinado hasta ahora, que tengo que ser capaz de suministrar (estos las fechas van a ser dinámicas) Quiero evitar repetir mi consulta 24 veces con alls union uniéndome a ellas como si tuviera que volver y agregar columnas adicionales que me llevaría mucho tiempo.
¿Puede explicar por qué necesita hacer esto? El 95% del tiempo cuando necesita una estructura de bucle en tSQL probablemente lo está haciendo mal. – JohnFx
¿Por qué no crear una tabla donde puede poblar las fechas con las que desea ejecutarla? Es casi seguro que hay una forma mejor de hacerlo que mirando a través de valores constantes codificados. – JohnFx
Las fechas en su ejemplo son secuenciales por mes. ¿Es eso una regla, o necesitas ser capaz de correr por un conjunto arbitrario de fechas? ¿Hay alguna razón por la que no pueda editar la consulta grande para tomar un rango de fechas o un conjunto de fechas en lugar de una sola fecha? Si necesitas pasar por las iteraciones (en contra de los buenos consejos dados anteriormente), entonces quizás quieras considerar usar un cursor. – JAQFrost