Q:

Count em Intervalos de Tempo do Passado

Bom dia ! 
Tenho uma view com contratos, e nela há uma coluna para DtInicioVigencia (DATE) e uma coluna DtFimVigencia (DATE).  Eu precisava contar o número de contratos ativos para cada um dos treze últimos meses.  Tinha pensado na query abaixo, e até deu certo, porém o tempo de execução foi alto (8Min) e para somente um dos treze meses que eu gostaria de puxar:
DECLARE @mm13 DATE
SET @mm13=DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),-1)
SELECT
 COUNT(NmContrato)
 FROM Corporativo. VwComercial
 where
DtFimVigencia>@mm13
and
DtInicioVigencia<@mm13

A:

O problema é um pouco complexo. 
Avalie a seguinte sugestão:
-- código #1
declare @Inicio_leitura date, @Inicio_mes_atual date;
set @Inicio_mes_atual= dateadd (month, datediff (month, 0, cast (sysdatetime() as date)), 0);
set @Inicio_leitura= dateadd (month, -13, @Inicio_mes_atual);

with 
Calendario as (
SELECT @Inicio_leitura as Data
union all
SELECT dateadd (month, +1, Data)
  from Calendario 
  where dateadd (month, +1, Data) < @Inicio_mes_atual
),
Contrato_Periodo as (
SELECT vC.NmContrato, 
       dateadd (month, datediff (month, 0, vC.DtInicioVigencia), 0) as MesAno_inicio,
       dateadd (month, datediff (month, 0, vC.DtFimVigencia), 0) as MesAno_fim
  from Corporativo.vwComercial as vC 
  where vC.DtInicioVigencia < @Inicio_mes_atual
        and vC.DtFimVigencia >= @Inicio_leitura
        --and vC.DtInicioVigencia < vC.DtFimVigencia
)
SELECT year (C.Data) as Ano, month (C.Data) as Mes, 
       count (CP.NmContrato) as Ativos 
  from Contrato_Periodo as CP
       cross join Calendario as C
  where C.Data between CP.MesAno_inicio and CP.MesAno_fim
  group by year (C.Data), month (C.Data);

Não testei; pode conter erro(s). 
Na CTE Calendario são gerados os 13 últimos meses, excluindo o mês em curso. 
Na CTE Contrato_Periodo são selecionados os contratos que estavam em vigência em pelo menos um dos 13 meses anteriores. 
Ao final, através de produto cartesiano são geradas n linhas por contrato, uma para cada mês do período de emissão em que o contrato estava ativo.  Após, são contabilizados os contratos por mês/ano.