Tôi có truy vấn SQL sau:SQL Server cho mỗi vòng lặp
DECLARE @MyVar datetime = '1/1/2010'
SELECT @MyVar
này một cách tự nhiên trở về '1/1/2010'.
Những gì tôi muốn làm là có một danh sách các ngày, nói:
1/1/2010
2/1/2010
3/1/2010
4/1/2010
5/1/2010
Sau đó, tôi muốn CHO MỖI qua những con số và chạy các truy vấn SQL.
Giống như (giả):
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
Vì vậy, đây sẽ trở lại: -
1/1/2010 2/1/2010 3/1/2010 4/1/2010 5/1/2010
Tôi muốn điều này trả về dữ liệu dưới dạng một kết quả, không phải nhiều kết quả, vì vậy tôi có thể cần sử dụng một số loại công đoàn ở cuối truy vấn, vì vậy mỗi lần lặp của các tổ hợp vòng tiếp theo .
chỉnh sửa
Tôi có một câu hỏi lớn mà chấp nhận một tham số 'cho đến nay, tôi cần phải chạy nó 24 lần, mỗi lần với một cụ thể cho đến nay mà tôi cần để có thể cung cấp (những ngày tháng sẽ là động) Tôi muốn tránh lặp lại truy vấn của tôi 24 lần với các liên minh tham gia cùng họ như thể tôi cần phải quay lại và thêm các cột bổ sung nó sẽ rất tốn thời gian.
Bạn có thể giải thích lý do tại sao bạn cần thực hiện việc này? 95% thời gian khi bạn cần cấu trúc lặp trong tSQL, có thể bạn đang làm sai. – JohnFx
Tại sao không tạo bảng nơi bạn có thể điền ngày bạn muốn chạy nó. Có gần như chắc chắn là một cách tốt hơn để làm điều này hơn là xem xét thông qua các giá trị liên tục hardcoded. – JohnFx
Các ngày trong ví dụ của bạn được tuần tự theo tháng. Đó có phải là một quy tắc, hay bạn cần để có thể chạy cho một tập hợp ngày tháng tùy ý? Có lý do nào khiến bạn không thể chỉnh sửa truy vấn lớn để có phạm vi ngày hoặc tập hợp các ngày thay vì một ngày không? Nếu bạn hoàn toàn cần phải bước qua các lần lặp lại (đối với lời khuyên tốt ở trên), thì bạn có thể muốn xem xét sử dụng một con trỏ. – JAQFrost