Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

HIỂN THỊ TẤT CẢ dữ liệu ngày giữa hai ngày; nếu không có hàng nào tồn tại cho ngày cụ thể thì hiển thị số 0 trong tất cả các cột

;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ề.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sau khi bế tắc một giao dịch trên các phiên bản SQL Server

  2. Hiểu các KHÓA SQL Server trên các truy vấn CHỌN

  3. Các cách để biết cách đối phó với lỗi cơ sở dữ liệu trong SQL Server

  4. Cách kiểm tra cài đặt cấu hình cho thư cơ sở dữ liệu trong SQL Server (T-SQL)

  5. Thay đổi một cột hiện có thành một cột được tính toán trong SQL Server (Ví dụ T-SQL)