;with d(date) as (
select cast('10/01/2012' as datetime)
union all
select date+1
from d
where date < '10/15/2012'
)
select t.ID, d.date CDate, isnull(t.val, 0) val
from d
left join temp t
on t.CDate = d.date
order by d.date
OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
Bạn cần tạo ngày tháng, vì vậy tôi sử dụng một biểu thức bảng phổ biến đệ quy ở đây.
Số MAXRECURSION
Chỉ định số lần đệ quy tối đa được phép cho truy vấn này. number là một số không liên kết giữa 0 và 32767. Khi 0 được chỉ định, không có giới hạn nào được áp dụng. Nếu tùy chọn này không được chỉ định, giới hạn mặc định cho máy chủ là 100.
Khi đạt đến số lượng được chỉ định hoặc số mặc định cho giới hạn MAXRECURSION trong quá trình thực thi truy vấn, truy vấn sẽ kết thúc và lỗi được trả về.