Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Jak wyświetlić wartość „0” dla miesiąca, jeśli w tabeli nie ma danych z tego miesiąca

Możesz wysłać zapytanie do tabeli z wartościami 1-12 i lewym zewnętrznym sprzężeniem w wyniku.

Oto przykład wykorzystujący zmienną tabeli zamiast zapytania i CTE do zbudowania tabeli z liczbami.

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

Wynik:

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. Pobieranie konkretnego błędu zadania SQL Agent

  2. Wprowadzenie do wbudowanych funkcji z wartościami tabelarycznymi (ITVF) w SQL Server

  3. Jak uzyskać sumę wszystkich wartości kolumn w ostatnim wierszu zestawu wyników?

  4. Odpowiednik MySQL ON DUPLICATE KEY UPDATE w Sql Server

  5. Jak ustawić klucz podstawowy podczas łączenia z CreateTableDef