none
Todos os dias do mes dentro de um parâmetro RRS feed

  • Pergunta

  • Srs.
    Bom dia,

    Eu estou criando um relatório onde eu preciso mostrar todos os dias em um mês (ex: 1 - 30 para o mês de abril) e exibir informações associadas a ela. Mas o meu relatório exibe apenas datas que os dados associados a ele e o resto ele ignora todos os outros dias. Existe alguma maneira para exibir todos os dias do relatório, independentemente dos dados?

    Obrigado,
    Ricardo Freitas

    sábado, 13 de abril de 2013 15:34

Respostas

  • Ricardo,

    Segue uma demonstração de como fazer, na verdade voce só precisa alterar o finalzinho, o ultimo select pois todo o resto esta montando suas tabelas e formatando os dados, o result set retornado por esta proc é apenas o ultimo select.

    DECLARE @DiaCorrente DATETIME
    SET @DiaCorrente = CAST(DATEADD(DAY, (DATEPART(DAY, GETDATE()) - 1) * -1,GETDATE()) AS DATE)
    
    CREATE TABLE #DiasCompleto
    (
    	Dia	DATETIME
    )
    
    WHILE(DATEPART(MONTH, @DiaCorrente) = DATEPART(MONTH, GETDATE()))
    BEGIN
    	INSERT INTO #DiasCompleto(Dia)
    	VALUES (@DiaCorrente)
    	
    	SET @DiaCorrente = DATEADD(DAY, 1, @DiaCorrente)
    END
    
    SELECT *
    FROM #DiasCompleto
    
    --------------------------------------Criação de exemplo:
    --NÃO ADICIONAR ISSO EM SUA PROC, FOI APENAS PARA DEMONSTRAÇÃO DO RESULTADO, ESSAS TABELAS SÃO CRIADAS JA EM SUA PROCEDURE
    CREATE TABLE #Resultado
    (
    	Dia	DATETIME,
    	Sistema	VARCHAR(100),
    	Abertos	INT,
    	Encerrados	INT,
    	[Carteira Atual]	INT
    )
    
    CREATE TABLE #Backlog
    (
    	Sistema	VARCHAR(100),
    	Abertos	INT,
    	Encerrados	INT,
    	[Carteira Atual]	INT
    )
    
    INSERT INTO #Resultado(Dia, Sistema, Abertos, Encerrados, [Carteira Atual])
    VALUES
    ('20130405', 'Sistema 1', 2, 2, 2),
    ('20130401', 'Sistema 2', 2, 2, 2),
    ('20130428', 'Sistema 3', 2, 2, 2)
    
    INSERT INTO #Backlog(Sistema, Abertos, Encerrados, [Carteira Atual])
    VALUES
    ('Sistema 1', 2, 2,2),
    ('Sistema 2', 2, 2,2),
    ('Sistema 3', 2, 2,2)
    
    ---------------------------------------------------------------
    --Select final com a tabela contendo todas as datas
    SELECT
    	c.Dia,
    	ISNULL(a.Sistema, '') As Sistema, 
    	ISNULL(a.Abertos, 0) As Abertos, 
    	ISNULL(a.Encerrados, 0) As Encerrados, 
    	ISNULL(a.[Carteira Atual], 0) As [Carteira Atual]
    FROM #DiasCompleto c
    LEFT JOIN #Resultado a
    	ON (c.Dia = a.Dia)
    WHERE
    	a.Sistema IN 
    		(
    			SELECT 
    				b.Sistema 
    			FROM #Backlog b
    			WHERE 
    				b.Abertos <> 0 
    				OR b.Encerrados <> 0 
    				OR b.[Carteira Atual] <> 0
    		)
    		OR a.Sistema IS NULL -- Necessario adicionar para trazer os 0
    ORDER BY
    	c.Dia,
    	a.Sistema


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 15 de abril de 2013 13:21
    Moderador
  • Ricardo,

    Legal cara, nem deu tempo de responder rs...

    Bom, para trazer nulo e não mais o 0 basta alterar de:

    SELECT
    	c.Dia,
    	ISNULL(a.Sistema, '') As Sistema, 
    	ISNULL(a.Abertos, 0) As Abertos, 
    	ISNULL(a.Encerrados, 0) As Encerrados, 
    	ISNULL(a.[Carteira Atual], 0) As [Carteira Atual]

    Para:

    SELECT
    	c.Dia,
    	a.Sistema As Sistema, 
    	a.Abertos As Abertos, 
    	a.Encerrados As Encerrados, 
    	a.[Carteira Atual] As [Carteira Atual]


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 15 de abril de 2013 19:13
    Moderador

Todas as Respostas

  • Ricardo,

    O que voce quer é exibir todos os dias independente se teve dados ou não? Ou seja, trazer 0 nos dias, mas ainda sim trazer os dias certo? A melhor maneira de voce fazer isso é via SQL Server mesmo, o que eu faria:

     - Criaria uma tabela temporaria na sua procedure com todos os dias do mes corrente;

     - No final de seu select da procedure faria um left join com ISNULL para 0 nos campos que devam ser zerados para não trazer nulo.

    Caso não seja procedure e sim um select direto, eu transformaria em procedure.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 15 de abril de 2013 11:51
    Moderador
  • Fabrizzio
    Bom dia,

    Obrigado por sua respostas.
    É isso mesmo que eu quero... Acertou na mosca!
    Mas minha procedure é gigante porque trago incidentes aberto, fechados e o backlog. Então ela tem diversas tabelas temporárias.

    Como eu faria isso?

    Estou te mandando a proc para vc ter uma noção do tamanho dela!

    alter procedure [dbo].[p_GetSystemsSystemsMaintenanceDiarioSistemaTotalPainel] (@DataInicial datetime, 
    																			     @DataFinal datetime)
    as
    
    set @DataFinal  = dateadd(dd, 1, @DataFinal)
    
    select distinct
        convert(varchar(10), dbo.UtcToLocal(i2.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688), 120) as Dia 
    into #Periodo
    from
        MTV_System$WorkItem$Incident i2
    where
        (dbo.UtcToLocal(i2.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688) >= CONVERT(DATETIME, @DataInicial, 103))
    and (dbo.UtcToLocal(I2.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688) < CONVERT(DATETIME, @DataFinal, 103) + 1)
    
    select distinct
    	case
    		when charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) = 0 
    			then dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91)
    		when (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1))) = 0
    			then substring(dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 
    			(charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1),
    			(LEN(dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91)) + 1))
    		else substring(dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 
    			(charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1), 
    			((charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1))) -
    			(charindex('\', dbo.fn_GetHierarquiaEnumeracao(WI.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1)))
    	end as [Sistema]
    into #Sistemas
    from
    	  MTV_System$WorkItem$Incident WI 
    where 
    	case when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'B9314FE7-E53E-541A-AF4E-D52B7C51813D' then 'Sustentação'
    	     when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '16E65C4B-2B81-88A2-D8BE-F6C4E38C4F78' then 'Sustentação'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '288C2956-C84B-7BB2-C19B-DECD9D54C90F' then 'Task Force'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '94DFCE13-EBD1-2D4A-5491-8953F7EDFB73' then 'Garantia de Projeto'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '40695EE3-2CF8-D32A-957A-157A89AD8FDA' then 'Garantia de Projeto'
    		 when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '8AFDC2E5-E75E-C225-C022-B1490C0C8568' then 'Garantia de Projeto'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'EBB44D49-E4F4-C796-EFA3-8DB09B9A2167' then 'Telecom'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'CD712F91-A26B-8FF8-133D-36F9F4B40D46' then 'Serviços e Operações'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '90CB6326-F9DA-94AA-4B5F-3A85B727DA6A' then 'Infraestrutura'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'F6BE71EC-63BF-77A8-4F43-B500705ED8ED' then 'Infraestrutura'
             when WI.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '733F51E0-7ED3-8143-8511-BCDB41A5884B' then 'Infraestrutura'
    	end IN ('Sustentação', 
    			'Task Force', 
    			'Garantia de Projeto', 
    			'Telecom',
    			'Serviços e Operações', 
    			'Infraestrutura')
    	and (WI.Classification_00B528BF_FB8F_2ED4_2434_5DF2966EA5FA NOT IN (
    																	'44FBEE1E-05FE-4AA2-4090-25F8A6EB4933',  -- Valida
    																	'C6CB80AA-14CA-6D04-2926-208250B20090',  -- QA 
    																	'C0F14B0E-09B7-A20D-86B0-BD081E082DDF',  -- Incidente QA
    																	'28DBC41A-5F60-9098-8803-E9B75E02BD16',  -- Desenvolvimento
    																	'9CB41B96-A98F-FF1D-ABD2-38C65003C8E9')) -- Acesso a Produção
    	and (WI.Cliente_CAAE960C_21FF_3DA8_EEEA_468F7CFAFDDF IN (
    															'2581679D-A30E-223B-4448-0AF70FB49FC5', 
    															'15DCA7AA-6956-DB06-A6AE-A2BBA3DC6827'))
    
    select 
    	Dia, 
    	Sistema 
    into #SistemaPeriodo
    from
    (
    	select * from
    		(
    		  select Dia from #Periodo
    		) X
    		CROSS JOIN 
    		(
    			select Sistema from #Sistemas
    		) Y 
    ) Z
    
    select 
    	convert(datetime, convert(char(10), dbo.UtcToLocal(WII.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688), 120)) CreatedDate,
    	convert(datetime, convert(char(10), dbo.UtcToLocal(WII.ResolvedDate_D2A4C73F_01B8_29C5_895B_5BE4C3DFAC4E), 120)) ResolvedDate,
    	WII.Status_785407A9_729D_3A74_A383_575DB0CD50ED Status,
    	case when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'B9314FE7-E53E-541A-AF4E-D52B7C51813D' then 'Sustentação'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '16E65C4B-2B81-88A2-D8BE-F6C4E38C4F78' then 'Sustentação'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '288C2956-C84B-7BB2-C19B-DECD9D54C90F' then 'Task Force'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '94DFCE13-EBD1-2D4A-5491-8953F7EDFB73' then 'Garantia de Projeto'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '40695EE3-2CF8-D32A-957A-157A89AD8FDA' then 'Garantia de Projeto'
    		 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '8AFDC2E5-E75E-C225-C022-B1490C0C8568' then 'Garantia de Projeto'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'EBB44D49-E4F4-C796-EFA3-8DB09B9A2167' then 'Telecom'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'CD712F91-A26B-8FF8-133D-36F9F4B40D46' then 'Serviços e Operações'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '90CB6326-F9DA-94AA-4B5F-3A85B727DA6A' then 'Infraestrutura'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'F6BE71EC-63BF-77A8-4F43-B500705ED8ED' then 'Infraestrutura'
             when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '733F51E0-7ED3-8143-8511-BCDB41A5884B' then 'Infraestrutura'
    	end as [Grupo Suporte],
    	case
    		when charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) = 0 
    			then dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91)
    		when (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1))) = 0
    			then substring(dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 
    			 (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1),
    			(LEN(dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91)) + 1))
    			else substring(dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 
    			 (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1), 
    			 ((charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), (charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1))) -
    		(charindex('\', dbo.fn_GetHierarquiaEnumeracao(WII.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1)))
    	end Sistema
    into #WorkItem$Incident 
    from
    	MTV_System$WorkItem$Incident WII
    where
    	(
    	dbo.UtcToLocal(WII.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688) >= @DataInicial 
    and dbo.UtcToLocal(WII.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688) < dateadd(dd, 1, @DataFinal)
    	or
    	dbo.UtcToLocal(WII.ResolvedDate_D2A4C73F_01B8_29C5_895B_5BE4C3DFAC4E) >= @DataInicial 
    and dbo.UtcToLocal(WII.ResolvedDate_D2A4C73F_01B8_29C5_895B_5BE4C3DFAC4E) < dateadd(dd, 1, @DataFinal)
    	)
    	and 
    		case when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'B9314FE7-E53E-541A-AF4E-D52B7C51813D' then 'Sustentação'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '16E65C4B-2B81-88A2-D8BE-F6C4E38C4F78' then 'Sustentação'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '288C2956-C84B-7BB2-C19B-DECD9D54C90F' then 'Task Force'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '94DFCE13-EBD1-2D4A-5491-8953F7EDFB73' then 'Garantia de Projeto'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '40695EE3-2CF8-D32A-957A-157A89AD8FDA' then 'Garantia de Projeto'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '8AFDC2E5-E75E-C225-C022-B1490C0C8568' then 'Garantia de Projeto'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'EBB44D49-E4F4-C796-EFA3-8DB09B9A2167' then 'Telecom'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'CD712F91-A26B-8FF8-133D-36F9F4B40D46' then 'Serviços e Operações'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '90CB6326-F9DA-94AA-4B5F-3A85B727DA6A' then 'Infraestrutura'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'F6BE71EC-63BF-77A8-4F43-B500705ED8ED' then 'Infraestrutura'
    			 when WII.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '733F51E0-7ED3-8143-8511-BCDB41A5884B' then 'Infraestrutura'
    		end IN ('Sustentação', 
    				'Task Force', 
    				'Garantia de Projeto', 
    				'Telecom',
    				'Serviços e Operações', 
    				'Infraestrutura')
    	and (WII.Classification_00B528BF_FB8F_2ED4_2434_5DF2966EA5FA NOT IN (
    																		'44FBEE1E-05FE-4AA2-4090-25F8A6EB4933',  -- Valida
    																		'C6CB80AA-14CA-6D04-2926-208250B20090',  -- QA 
    																		'C0F14B0E-09B7-A20D-86B0-BD081E082DDF',  -- Incidente QA
    																		'28DBC41A-5F60-9098-8803-E9B75E02BD16',  -- Desenvolvimento
    																		'9CB41B96-A98F-FF1D-ABD2-38C65003C8E9')) -- Acesso a Produção
    	and (WII.Cliente_CAAE960C_21FF_3DA8_EEEA_468F7CFAFDDF IN (
    															'2581679D-A30E-223B-4448-0AF70FB49FC5', 
    															'15DCA7AA-6956-DB06-A6AE-A2BBA3DC6827'))
    
    select
    	i.Id_9A505725_E2F2_447F_271B_9B9F4F0D190C as Id,
    	cast(CONVERT(varchar(10), dbo.UtcToLocal(i.CreatedDate_6258638D_B885_AB3C_E316_D00782B8F688), 120) as datetime) as [Criação],
    	cast(CONVERT(varchar(10), dbo.UtcToLocal(i.ResolvedDate_D2A4C73F_01B8_29C5_895B_5BE4C3DFAC4E), 120) as datetime) as [Resolução],
    	i.Status_785407A9_729D_3A74_A383_575DB0CD50ED as Status,
    	case
    		  when charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) = 0 
    				then dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91)
    		  when (charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), (charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1))) = 0
    				then substring(dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 
    				 (charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1),
    				(LEN(dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91)) + 1))
    				else substring(dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 
    				 (charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1), 
    				 ((charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), (charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1))) -
    		 (charindex('\', dbo.fn_GetHierarquiaEnumeracao(i.Titulo_C7505A39_F47B_416A_F5DB_B752640CDF91), 1) + 1)))
    	end as [Sistema],
    	case 
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'B9314FE7-E53E-541A-AF4E-D52B7C51813D' then 'Sustentação'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '16E65C4B-2B81-88A2-D8BE-F6C4E38C4F78' then 'Sustentação'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '288C2956-C84B-7BB2-C19B-DECD9D54C90F' then 'Task Force'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '94DFCE13-EBD1-2D4A-5491-8953F7EDFB73' then 'Garantia de Projeto'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '40695EE3-2CF8-D32A-957A-157A89AD8FDA' then 'Garantia de Projeto'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '8AFDC2E5-E75E-C225-C022-B1490C0C8568' then 'Garantia de Projeto'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'EBB44D49-E4F4-C796-EFA3-8DB09B9A2167' then 'Telecom'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'CD712F91-A26B-8FF8-133D-36F9F4B40D46' then 'Serviços e Operações'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '90CB6326-F9DA-94AA-4B5F-3A85B727DA6A' then 'Infraestrutura'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'F6BE71EC-63BF-77A8-4F43-B500705ED8ED' then 'Infraestrutura'
    		when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '733F51E0-7ED3-8143-8511-BCDB41A5884B' then 'Infraestrutura'
    	end as [Grupo de Suporte]
    	into #Incidentes
    	from 
    		MTV_System$WorkItem$Incident i
    	where 
    		case when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'B9314FE7-E53E-541A-AF4E-D52B7C51813D' then 'Sustentação'
    			 when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '16E65C4B-2B81-88A2-D8BE-F6C4E38C4F78' then 'Sustentação'
    	         when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '288C2956-C84B-7BB2-C19B-DECD9D54C90F' then 'Task Force'
    		     when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '94DFCE13-EBD1-2D4A-5491-8953F7EDFB73' then 'Garantia de Projeto'
    			 when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '40695EE3-2CF8-D32A-957A-157A89AD8FDA' then 'Garantia de Projeto'
    			 when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '8AFDC2E5-E75E-C225-C022-B1490C0C8568' then 'Garantia de Projeto'
    	         when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'EBB44D49-E4F4-C796-EFA3-8DB09B9A2167' then 'Telecom'
    		     when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'CD712F91-A26B-8FF8-133D-36F9F4B40D46' then 'Serviços e Operações'
    	         when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '90CB6326-F9DA-94AA-4B5F-3A85B727DA6A' then 'Infraestrutura'
    		     when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = 'F6BE71EC-63BF-77A8-4F43-B500705ED8ED' then 'Infraestrutura'
    			 when i.TierQueue_1E9615C2_3386_2452_BA83_05B2169DF38C = '733F51E0-7ED3-8143-8511-BCDB41A5884B' then 'Infraestrutura'
    		end IN ('Sustentação', 
    				'Task Force', 
    				'Garantia de Projeto', 
    				'Telecom',
    				'Serviços e Operações',
    				'Infraestrutura')
    		and (i.Classification_00B528BF_FB8F_2ED4_2434_5DF2966EA5FA NOT IN (
    																		'44FBEE1E-05FE-4AA2-4090-25F8A6EB4933',  -- Valida
    																	    'C6CB80AA-14CA-6D04-2926-208250B20090',  -- QA 
    																	    'C0F14B0E-09B7-A20D-86B0-BD081E082DDF',  -- Incidente QA
    																	    '28DBC41A-5F60-9098-8803-E9B75E02BD16',  -- Desenvolvimento
    																	    '9CB41B96-A98F-FF1D-ABD2-38C65003C8E9')) -- Acesso a Produção
    		and (i.Cliente_CAAE960C_21FF_3DA8_EEEA_468F7CFAFDDF IN (
    																'2581679D-A30E-223B-4448-0AF70FB49FC5', 
    																'15DCA7AA-6956-DB06-A6AE-A2BBA3DC6827'))
    select m.*
    into #Resultado
    from
    (
    select 
                    x.Dia, x.Sistema, 
                    sum(x.Abertos) Abertos, 
                    sum(x.Encerrados) Encerrados,
                    sum(x.[Carteira Atual]) [Carteira Atual]
    from 
    (
    				--------- Abertos ---------
                    select 
                                   z.Dia, z.Sistema, --[Grupo de Suporte], 
                                   count(*) Abertos, 0 Encerrados, 0 [Carteira Atual]
                    from 
                                   #SistemaPeriodo Z
                                                   inner join #WorkItem$Incident i 
                                                   on i.CreatedDate = Z.Dia 
                                                   and i.Sistema = Z.Sistema
                                                   
                    group by
                                   z.Dia, z.Sistema 
                    UNION
    
    				--------- Fechados ---------
    
                    select 
                                   z.Dia, z.Sistema,
                                   0 Abertos, count(*) Encerrados, 0 [Carteira Atual]
                    from 
                                   #SistemaPeriodo Z
                                                   inner join #WorkItem$Incident i 
                                                   on i.ResolvedDate = Z.Dia 
                                                   and i.Sistema = Z.Sistema
                                                   
                    group by
                                   z.Dia, z.Sistema 
    
                    UNION
                    
    				--------- Backlog ---------
    
    				select         z.Dia, z.Sistema,
    								0 Abertos, 0 Encerrados, count(*) [Carteira Atual]
    				from 
                                   #SistemaPeriodo Z
    									inner join #Incidentes i
    										on z.Sistema = i.Sistema
    
    				where
    				(
    					(i.Criação <= z.Dia)
    					AND (i.Resolução > z.Dia)
    					AND (i.Status in ('BD0AE7C4-3315-2EB3-7933-82DFC482DBAF', '2B8830B6-59F0-F574-9C2A-F4B4682F1681'))
    				)
    					OR  
    				(
    					(i.Criação <= z.Dia)
    					AND (i.Status not in ('BD0AE7C4-3315-2EB3-7933-82DFC482DBAF', '2B8830B6-59F0-F574-9C2A-F4B4682F1681'))
    				)
    				
                    group by
                                   Z.Dia, z.Sistema 
                                   
    
    				UNION
    				
    				-------------- Lacunas --------------
    
    				select z.Dia, z.Sistema, 0 Abertos, 0 Encerrados, 0 [Carteira Atual]
    				from #SistemaPeriodo Z
    
    ) x
    group by
                    x.Dia, x.Sistema 
    )m
    where 
                    m.Dia >= @DataInicial and m.Dia < dateadd( dd, 1, @DataFinal  )
    
    ---------------------------------------------------------------------
    
    select Sistema, SUM(Abertos) as Abertos, SUM(Encerrados) as Encerrados, SUM([Carteira Atual]) as [Carteira Atual]
    into #Backlog
    from #Resultado 
    group by Sistema
    
    --------------------------------------------------------------------------
    
    select Dia, Sistema, Abertos, Encerrados, [Carteira Atual]
    from #Resultado
    where Sistema in (select Sistema from #Backlog where Abertos <> 0 or Encerrados <> 0 or [Carteira Atual] <> 0)
    order by Sistema, Dia
    ;
    

    Se vc puder me ajudar, agradeço muito!
    Obrigado,

    Ricardo Freitas

    segunda-feira, 15 de abril de 2013 13:01
  • Ricardo,

    Segue uma demonstração de como fazer, na verdade voce só precisa alterar o finalzinho, o ultimo select pois todo o resto esta montando suas tabelas e formatando os dados, o result set retornado por esta proc é apenas o ultimo select.

    DECLARE @DiaCorrente DATETIME
    SET @DiaCorrente = CAST(DATEADD(DAY, (DATEPART(DAY, GETDATE()) - 1) * -1,GETDATE()) AS DATE)
    
    CREATE TABLE #DiasCompleto
    (
    	Dia	DATETIME
    )
    
    WHILE(DATEPART(MONTH, @DiaCorrente) = DATEPART(MONTH, GETDATE()))
    BEGIN
    	INSERT INTO #DiasCompleto(Dia)
    	VALUES (@DiaCorrente)
    	
    	SET @DiaCorrente = DATEADD(DAY, 1, @DiaCorrente)
    END
    
    SELECT *
    FROM #DiasCompleto
    
    --------------------------------------Criação de exemplo:
    --NÃO ADICIONAR ISSO EM SUA PROC, FOI APENAS PARA DEMONSTRAÇÃO DO RESULTADO, ESSAS TABELAS SÃO CRIADAS JA EM SUA PROCEDURE
    CREATE TABLE #Resultado
    (
    	Dia	DATETIME,
    	Sistema	VARCHAR(100),
    	Abertos	INT,
    	Encerrados	INT,
    	[Carteira Atual]	INT
    )
    
    CREATE TABLE #Backlog
    (
    	Sistema	VARCHAR(100),
    	Abertos	INT,
    	Encerrados	INT,
    	[Carteira Atual]	INT
    )
    
    INSERT INTO #Resultado(Dia, Sistema, Abertos, Encerrados, [Carteira Atual])
    VALUES
    ('20130405', 'Sistema 1', 2, 2, 2),
    ('20130401', 'Sistema 2', 2, 2, 2),
    ('20130428', 'Sistema 3', 2, 2, 2)
    
    INSERT INTO #Backlog(Sistema, Abertos, Encerrados, [Carteira Atual])
    VALUES
    ('Sistema 1', 2, 2,2),
    ('Sistema 2', 2, 2,2),
    ('Sistema 3', 2, 2,2)
    
    ---------------------------------------------------------------
    --Select final com a tabela contendo todas as datas
    SELECT
    	c.Dia,
    	ISNULL(a.Sistema, '') As Sistema, 
    	ISNULL(a.Abertos, 0) As Abertos, 
    	ISNULL(a.Encerrados, 0) As Encerrados, 
    	ISNULL(a.[Carteira Atual], 0) As [Carteira Atual]
    FROM #DiasCompleto c
    LEFT JOIN #Resultado a
    	ON (c.Dia = a.Dia)
    WHERE
    	a.Sistema IN 
    		(
    			SELECT 
    				b.Sistema 
    			FROM #Backlog b
    			WHERE 
    				b.Abertos <> 0 
    				OR b.Encerrados <> 0 
    				OR b.[Carteira Atual] <> 0
    		)
    		OR a.Sistema IS NULL -- Necessario adicionar para trazer os 0
    ORDER BY
    	c.Dia,
    	a.Sistema


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 15 de abril de 2013 13:21
    Moderador
  • Fabrizzio,

    Vou te fazer uma pergunta ignorante:
    Preciso colocar na minha proc o código abaixo

    DECLARE @DiaCorrente DATETIME
    SET @DiaCorrente = CAST(DATEADD(DAY, (DATEPART(DAY, GETDATE()) - 1) * -1,GETDATE()) AS DATE)

    CREATE TABLE #DiasCompleto
    (
    Dia DATETIME
    )

    WHILE(DATEPART(MONTH, @DiaCorrente) = DATEPART(MONTH, GETDATE()))
    BEGIN
    INSERT INTO #DiasCompleto(Dia)
    VALUES (@DiaCorrente)

    SET @DiaCorrente = DATEADD(DAY, 1, @DiaCorrente)
    END

    SELECT *
    FROM #DiasCompleto

    E alterar meu ultimo select.

    Estou fazendo isso e quando mando rodar a proc, só esta me trazendo o dia...
    Sistemas, Abertos, Fechado e Backlog não estão vindo.

    O que estou fazendo de errado!

    Abraços,
    Ricardo Freitas

    segunda-feira, 15 de abril de 2013 17:36
  • Fabrizzio,

    Deu certo!!! Fiz besteira!!!! rs

    Agora deixa eu te fazer outra pergunta!
    - De vez de trazer 0 (zero), trazer NULL (em branco), o que devo mudar!

    Obrigado,
    Abraços,

    Ricardo Freitas


    segunda-feira, 15 de abril de 2013 19:08
  • Ricardo,

    Legal cara, nem deu tempo de responder rs...

    Bom, para trazer nulo e não mais o 0 basta alterar de:

    SELECT
    	c.Dia,
    	ISNULL(a.Sistema, '') As Sistema, 
    	ISNULL(a.Abertos, 0) As Abertos, 
    	ISNULL(a.Encerrados, 0) As Encerrados, 
    	ISNULL(a.[Carteira Atual], 0) As [Carteira Atual]

    Para:

    SELECT
    	c.Dia,
    	a.Sistema As Sistema, 
    	a.Abertos As Abertos, 
    	a.Encerrados As Encerrados, 
    	a.[Carteira Atual] As [Carteira Atual]


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 15 de abril de 2013 19:13
    Moderador
  • Fabrizzio,

    Tenho que te agradecer de coração!

    Deu certo!

    Muito obrigado!
    Abraços,

    Ricardo Freitas

    terça-feira, 16 de abril de 2013 13:45
  • Ricardo,

    Rs...sem problemas, apenas marque por favor como "resposta" as respostas que te ajudaram, para que assim outros usuarios possam se beneficiar da mesma.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Email: fabrizzio.antoniaci@gmail.com

    terça-feira, 16 de abril de 2013 13:48
    Moderador