Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Как да се покаже стойност "0" за месец, ако в таблицата няма данни за този месец

Можете да направите заявка към таблица със стойности 1-12 и ляво външно съединяване на вашия резултат.

Ето пример, използващ променлива на таблица вместо вашата заявка и CTE за изграждане на таблица с числа.

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

Резултат:

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. Как да конвертирате колона varchar в битова колона в SQL SERVER

  2. Как да прехвърля криптирани съхранени процедури от онлайн база данни към локална?

  3. ANSI_NULLS и QUOTED_IDENTIFIER убиха нещата. За какво са те?

  4. Помощникът за генериране на скрипт на SQL Server 2008 ми дава скрипт, който води до незатворени кавички

  5. SQL заявка за време In/Out присъствие