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

SQL - làm cách nào để tạo các hàng cho mỗi tháng dựa trên phạm vi ngày trong tập dữ liệu hiện có?

Tôi thấy dễ dàng nhất để giải quyết những vấn đề này bằng cách tạo một danh sách các số nguyên và sau đó sử dụng danh sách đó để tăng ngày tháng. Đây là một ví dụ:

with nums as (
      select 0 as n
      union all
      select n + 1 as n
      from nums
      where n < 11
     )
select rowid, datestart, dateend,
       year(dateadd(month, n.n, datestart)) as yr,
       month(dateadd(month, n.n, datestart)) as mon
from table t join
     nums n
     on dateadd(month, n.n - 1, datestart) <= dateend;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL loại bỏ tất cả các ký tự không phải chữ cái và không phải số

  2. Làm cách nào để chèn giá trị bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác?

  3. Thay đổi đối chiếu trên cột chỉ mục được phân cụm trong SQL 2005

  4. SQL - Toán hạng dữ liệu kiểu datetime2 không hợp lệ cho toán tử trừ

  5. Chèn các ký tự vào giữa chuỗi trong SQL Server (T-SQL)