我有以下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查詢。
類似的信息(僞):
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 2010/2/1 3/1/2010 2010/4/1 2010年5月1日
我希望這可以返回數據作爲一個結果集,而不是多個結果集,所以我可能需要在查詢結束時使用某種聯合,所以每次迭代循環聯合到下一個。
編輯
我有一個接受「最新」參數大型查詢,我需要運行24次,用特定的日期,我需要能夠提供每次(這些日期將是動態的)我想避免重複我的查詢24次與聯盟所有人加入他們,就好像我需要回來並添加額外的列這將是非常耗時。
你能解釋爲什麼你需要這樣做嗎?當你需要tSQL中的循環結構時,有95%的時間你可能做錯了。 – JohnFx 2012-04-24 14:53:11
爲什麼不創建一個表格,您可以在其中填充要運行的日期。與通過硬編碼的常量值進行查看相比,幾乎可以肯定有更好的方法來做到這一點。 – JohnFx 2012-04-24 14:57:12
您示例中的日期是按月順序排列的。這是一個規則,還是你需要能夠運行一組任意日期?是否有理由不能編輯大型查詢來取日期範圍或日期集而不是單一日期?如果你絕對需要通過迭代(針對上面給出的好建議),那麼你可能需要考慮使用遊標。 – JAQFrost 2012-04-24 22:36:58