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

SQL Cách hiển thị giá trị '0' cho một tháng, nếu không có dữ liệu nào tồn tại trong bảng cho tháng đó

Bạn có thể truy vấn một bảng có các giá trị 1-12 và kết hợp bên ngoài bên trái với kết quả của bạn.

Đây là một ví dụ sử dụng một biến bảng thay vì truy vấn của bạn và một CTE để tạo một bảng với các số.

declare @T table
(
  Month int
)

insert into @T values(1)
insert into @T values(1)
insert into @T values(1)
insert into @T values(3)
insert into @T values(3)

;with Months(Month) as
(
  select 1
  union all
  select Month + 1
  from Months
  where Month < 12
)
select M.Month,
       count(T.Month) Count,
       isnull(sum(T.Month), 0) Sum
from Months as M
  left outer join @T as T
    on M.Month = T.Month
group by M.Month

Kết quả:

Month       Count       Sum
----------- ----------- -----------
1           3           3
2           0           0
3           2           6
4           0           0
5           0           0
6           0           0
7           0           0
8           0           0
9           0           0
10          0           0
11          0           0
12          0           0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để CHỌN nhiều cột trong CASE WHEN trên SQL Server?

  2. Asp.Net gây ra lỗi hết thời gian chờ khi chạy quy trình đã lưu trữ

  3. Trả về danh sách các bảng &chế độ xem trong SQL Server bằng T-SQL (sp_tables)

  4. Nhận các tham số thủ tục được lưu trữ bằng C # hoặc SQL?

  5. Bảo quản ORDER BY trong CHỌN VÀO