Alguém tem alguma sugestão para que o cálculo abaixo seja apenas dos anos que contenham todos os meses?
USE [pesquise]
GO
/****** Object: StoredProcedure [dbo].[spTaxaAtaqueAARHFaixaEtaria] Script Date: 02-05-2014 11:43:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[spTaxaAtaqueAARHFaixaEtaria]
AS
BEGIN
;with
IdadeCasos as (
SELECT B.id, year(C.data_Contato) as AnoCaso, DateDiff(year, B.data_nasc, C.data_Contato) as Idade
from OJ_Prod_AARH as C inner join
ag_Soc_PF as B on B.id = C.cod_pf
--where ...
),
AnoaAno as (
SELECT AnoCaso,
FxEtaria1= sum(case when Idade <= 9 then 1 else 0 end),
FxEtaria2= sum(case when Idade between 10 and 19 then 1 else 0 end),
FxEtaria3= sum(case when Idade between 20 and 59 then 1 else 0 end),
FxEtaria4= sum(case when Idade >= 60 then 1 else 0 end)
from IdadeCasos
group by AnoCaso
),
MediaC as (
SELECT avg(FxEtaria1) as FxEtaria1, avg(FxEtaria2) as FxEtaria2,
avg(FxEtaria3) as FxEtaria3, avg(FxEtaria4) as FxEtaria4
from AnoaAno
),
Media as (
SELECT FxE, Casos
from MediaC
unpivot (Casos for FxE in ([FxEtaria1], [FxEtaria2], [FxEtaria3], [FxEtaria4])) as U
),
PopFxE as (
select
case
when FXETARIA <= 0909 then 'FxEtaria1'
when FXETARIA <= 1919 then 'FxEtaria2'
when FXETARIA <= 5959 then 'FxEtaria3'
else 'FxEtaria4'
end as FaixaEtaria,
sum(POPULACAO) as Populacao
from POPBR10
Where MUNIC_RES=411850
group by
case
when FXETARIA <= 0909 then 'FxEtaria1'
when FXETARIA <= 1919 then 'FxEtaria2'
when FXETARIA <= 5959 then 'FxEtaria3'
else 'FxEtaria4'
end
)
SELECT case M.FxE when 'FxEtaria1' then 'Criancas'
when 'FxEtaria2' then 'Adolescentes'
when 'FxEtaria3' then 'Adultos'
when 'FxEtaria4' then 'Terceira_idade' end as [GRUPO_ETARIO],
cast((1000. * (M.Casos / P.Populacao)) as decimal(8,2)) as [Taxa_Ataque]
--, M.Casos, P.Populacao
from Media as M inner join
PopFxE as P on P.FaixaEtaria = M.FxE
order by M.FxE;
END