Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL So zeigen Sie den Wert '0' für einen Monat an, wenn für diesen Monat keine Daten in der Tabelle vorhanden sind

Sie können eine Tabelle mit den Werten 1-12 abfragen und Ihr Ergebnis mit Left Outer Join verbinden.

Hier ist ein Beispiel, das eine Tabellenvariable anstelle Ihrer Abfrage und einen CTE verwendet, um eine Tabelle mit Zahlen zu erstellen.

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

Ergebnis:

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