Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

informat

Wth rollup

Recommended Posts

Ola pessoal!Meu nome é Rafael. Eu estou com uma tabela onde tenho os seguintes campos Logdthora, Logduraquero totalizar esses o campo Logdura pra isso utilizo a comando Sum(logdura) na minha procedure passao os parametros de data inicial e final a utilizo a o Group by para agrupar a para trazer a um total final final uso o comando With Rollup.Como faço para colocar um nome na utima linha em que o camnado retorna NULL e retorna a data sem retona muitas linhas NULL???ate mais obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao to fazendo assim a proc

CREATE  PROCEDURE PROC_WEBREPORT_HORA_HORA	 @SERVICO VARCHAR(20),														  @DT_INI DATETIME,														  @DT_FIM DATETIME				AS				BEGIN				    SELECT	   CONVERT(VARCHAR(2),LOGDTHORA,108) AS HORA,		     COUNT(LOGDURA) AS TOTAL_LIG,			  SUM(LOGDURA) AS TOTAL_SEGUNDOS,			  CONVERT(NUMERIC(15,2),SUM(LOGDURA)/60) AS TOTAL_MINUTOS,			  CONVERT(NUMERIC(15,2),(SUM(LOGDURA)/60)/60) AS TOTAL_HORAS,		     CONVERT(NUMERIC(15,2),(SUM(LOGDURA)/60)/COUNT(LOGDURA)) AS TMA		     FROM CADLOG   (NOLOCK)   WHERE LOGDTHORA BETWEEN  @DT_INI AND  @DT_FIM				  AND   (RIGHT(RTRIM(LOGNUMB),8) = @servico  OR @SERVICO = '0')				   GROUP BY CONVERT(VARCHAR(2),LOGDTHORA,108)		    UNION   SELECT 'TOTAL' AS HORA,    COUNT(LOGDURA) AS TOTAL_LIG,			  SUM(LOGDURA) AS TOTAL_SEGUNDOS,			  CONVERT(NUMERIC(15,2),SUM(LOGDURA)/60) AS TOTAL_MINUTOS,			  CONVERT(NUMERIC(15,2),(SUM(LOGDURA)/60)/60) AS TOTAL_HORAS,		     CONVERT(NUMERIC(15,2),(SUM(LOGDURA)/60)/COUNT(LOGDURA)) AS TMA		   		 FROM CADLOG	(NOLOCK) WHERE LOGDTHORA BETWEEN  @DT_INI AND  @DT_FIM				 AND   (RIGHT(RTRIM(LOGNUMB),4) = RIGHT(RTRIM(@SERVICO),4) OR @SERVICO = '0')end

fazendo o select com o union coloco a ultima linha com string total

mais aqui nao to utilizando o comando with rollup

se usar o comando with rollup com a função isnull e null ele retorna toda a coluna scrito 'total'

EX:

SELECT ISNULL(LOGDTHORA, 'TOTAL') AS HORA:
OU

SELECT CASE LOGDTHORA WHEN  'NULL' THEN 'TOTAL' END
....tambem nao consegui

 

se puder me ajudar fico grato..

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta socar tudo numa tabela virtual e fazer o rollup na tabela virtual criada.

 

aqui tem um exemplo de como criar tabela virtual: http://forum.imasters.com.br/index.php?showtopic=224865

 

veja tb. o tópico de geração de somatórios: http://forum.imasters.com.br/index.php?showtopic=224861

 

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.