WesSouza Postado Fevereiro 28, 2012 Denunciar Share Postado Fevereiro 28, 2012 Bom possuo uma consulta Sql Que efetua soma do campo valor_deposito Corretamente...Mas gostaria que tambem exibixe um total geral a cada diferente cod_processo :mellow: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 28, 2012 Denunciar Share Postado Fevereiro 28, 2012 Boa tarde WesSouza, você pode utilizar a funçao SUM no valor que deseja somar e fazer o agrupamento pelo cod_processo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 WesSouza Postado Fevereiro 28, 2012 Autor Denunciar Share Postado Fevereiro 28, 2012 Boa tarde WesSouza, você pode utilizar a funçao SUM no valor que deseja somar e fazer o agrupamento pelo cod_processo. Exatamente o que eu consegui fazer...Porem eu gostaria que aparece o Total referente ao Depositante e o Total Geral de acordo com /Cod em que o Depositante depositou EX:Cod Depositante Valor 123 Joao 100,00- - 110,00- - 210,00 Total- Jose 55,00- - 60,00 105,00 Total 315,00 Total Geral no Cod 123Obrigado pela ajuda Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 28, 2012 Denunciar Share Postado Fevereiro 28, 2012 Deste jeito terá que fazer 2 selects. Um agrupando pelo depositante e outro agrupando pelo Cod. Outra alternativa é executar a primeira soma já criando uma temporária, e depois realizar a soma novamente a partir da mesma. Espero que ajude!! :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 WesSouza Postado Fevereiro 28, 2012 Autor Denunciar Share Postado Fevereiro 28, 2012 Deste jeito terá que fazer 2 selects. Um agrupando pelo depositante e outro agrupando pelo Cod. Outra alternativa é executar a primeira soma já criando uma temporária, e depois realizar a soma novamente a partir da mesma. Espero que ajude!! :.)Sim Entendi o seu ponto de vista mas voce teria algum exemplo prático para eu não me confundir no Codigo?Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 28, 2012 Denunciar Share Postado Fevereiro 28, 2012 Sim, sem problemas.... Teoricamente está bem simples os selects. Mas o que vai diferenciar o uso de um ou de outro será mesmo a complexidade do select e dos dados de retorno em si. As vezes trabalhar passo a passo (criando temporárias) fica mais fácil o entendimento e manutenção. Segue o exemplo das duas formas que falei:--criação da tabela create table #Dados (Cod int, Depositante VARCHAR(10), Valor INT) --inserção dos dados INSERT INTO #Dados VALUES (123, 'Joao', 100) INSERT INTO #Dados VALUES (123, 'Joao', 110) INSERT INTO #Dados VALUES (123, 'Jose', 55) INSERT INTO #Dados VALUES (123, 'Jose', 60) -- 2 selects SELECT Depositante, SUM(Valor) FROM #Dados GROUP BY Depositante SELECT Cod, SUM(Valor) FROM #Dados GROUP BY Cod --utilizando uma temporária SELECT Depositante, SUM(Valor) Valor into #TabelaTemporaria FROM #Dados GROUP BY Depositante -- verificação da tabela criada SELECT * FROM #TabelaTemporaria -- realizando a soma SELECT SUM(valor) FROM #TabelaTemporaria Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 WesSouza Postado Fevereiro 29, 2012 Autor Denunciar Share Postado Fevereiro 29, 2012 Sim, sem problemas.... Teoricamente está bem simples os selects. Mas o que vai diferenciar o uso de um ou de outro será mesmo a complexidade do select e dos dados de retorno em si. As vezes trabalhar passo a passo (criando temporárias) fica mais fácil o entendimento e manutenção. Segue o exemplo das duas formas que falei:--criação da tabela create table #Dados (Cod int, Depositante VARCHAR(10), Valor INT) --inserção dos dados INSERT INTO #Dados VALUES (123, 'Joao', 100) INSERT INTO #Dados VALUES (123, 'Joao', 110) INSERT INTO #Dados VALUES (123, 'Jose', 55) INSERT INTO #Dados VALUES (123, 'Jose', 60) -- 2 selects SELECT Depositante, SUM(Valor) FROM #Dados GROUP BY Depositante SELECT Cod, SUM(Valor) FROM #Dados GROUP BY Cod --utilizando uma temporária SELECT Depositante, SUM(Valor) Valor into #TabelaTemporaria FROM #Dados GROUP BY Depositante -- verificação da tabela criada SELECT * FROM #TabelaTemporaria -- realizando a soma SELECT SUM(valor) FROM #TabelaTemporaria Muito Obrigado Estava buscando um exemplo para tentar modificar o meu scrpt, que exiba alem do Total de cada depositante_deposito Total Geral de acordo com o cod_processo, no seu exemplo só acontece um total, de uma olhada na imagem fica mais claro a minha duvida... http://social.msdn.microsoft.com/Forums/getfile/72714 ;with cte_teste as( select depositante_deposito , cod_processo,sum(valor_deposito) as valor_deposito ,data_vencimento_deposito,guia_deposito, id_deposito, cod_mandado, cod_guia_deposito from deposito group by rollup( depositante_deposito, cod_processo, data_vencimento_deposito, guia_deposito, id_deposito, cod_mandado, cod_guia_deposito)), Base as ( select depositante_deposito , cod_processo,valor_deposito ,data_vencimento_deposito,guia_deposito, id_deposito, cod_mandado, cod_guia_deposito ,row_number() over (partition by depositante_deposito order by depositante_deposito,cod_processo) numerador ,row_number() over (partition by cod_processo order by cod_processo,depositante_deposito)numerador2 from cte_teste WHERE(depositante_deposito Is Not null And cod_processo Is Not null And guia_deposito Is Not null And id_deposito Is Not null And cod_mandado Is Not null And cod_guia_deposito Is Not null) or (depositante_deposito is not null and cod_processo is not null and guia_deposito is null and id_deposito is null and cod_mandado is null and cod_guia_deposito is null and data_vencimento_deposito is null)) select case when numerador =1 then depositante_deposito else '' end as Nome,case when numerador2 =1 then cod_processo else '' end as cod_processo,valor_deposito ,data_vencimento_deposito,guia_deposito ,id_deposito ,cod_mandado,cod_guia_deposito from BaseBom Se voce tiver sugestões Agradeço !! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 29, 2012 Denunciar Share Postado Fevereiro 29, 2012 Vi a imagem em anexo... mas não entedi uma coisa: nas colunas Nome e Cod_Processo há campos em branco? No exemplo que passsei, não existem campos em branco. Por isso que o resultado sai ok. Se a sua base estiver da forma que postou na imagem, não terá jeito de fazer da forma que passei.... você terá que criar um loop para ir somando os campos, até encontrar um campo que tenha um nome diferente do q está somandom. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 WesSouza Postado Fevereiro 29, 2012 Autor Denunciar Share Postado Fevereiro 29, 2012 Vi a imagem em anexo... mas não entedi uma coisa: nas colunas Nome e Cod_Processo há campos em branco? No exemplo que passsei, não existem campos em branco. Por isso que o resultado sai ok. Se a sua base estiver da forma que postou na imagem, não terá jeito de fazer da forma que passei.... você terá que criar um loop para ir somando os campos, até encontrar um campo que tenha um nome diferente do q está somandom.Esses campos tem espaços em Branco Porque pelo Meu script fiz com que eles não aparececem para não repetir dados iguais somente nessas colunas para uma melhor vizualização quando Colado em um relátorio...E esse loop teria que checar o campo Cod_processo para realizar a soma e exibir o Total Geral dos Depositos do Nome, pois o importante é saber o Tatal Geral de Cada diferente Cod _processo...Talves eu tenha que reconstruir meu scrpt mas não saberia como aplicar todas as condições que preciso..Mas em um primeiro momento Eu precisaria de uma exemplo desse Loop que voce comentouMuito Obrigado mesmo pela ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 29, 2012 Denunciar Share Postado Fevereiro 29, 2012 Boa tarde WesSouza, Ficaria mais fácil você alterar o script e visualizar todos os dados de retorno.... Segue um exemplo com o loop:-- criando tabela create TABLE #Dados (id int identity, nome VARCHAR(15), valor int) -- inserindo dados INSERT INTO #Dados VALUES ('Elisabeth', 2443) INSERT INTO #Dados VALUES ('', 2443) INSERT INTO #Dados VALUES ('', 2443) INSERT INTO #Dados VALUES ('', 2443) INSERT INTO #Dados VALUES ('Rota', 1000) INSERT INTO #Dados VALUES ('', 1000) INSERT INTO #Dados VALUES ('', 1000) INSERT INTO #Dados VALUES ('', 1000) -- fazendo a somatória - selecionar até o final e executar DECLARE @Cont INT DECLARE @Nome VARCHAR(15) DECLARE @SubTotal INT DECLARE @Total INT SET @Cont = 1 SET @SubTotal = 0 SET @Total = 0 WHILE (@Cont <= (SELECT COUNT(nome) FROM #Dados)) BEGIN SET @Nome = (SELECT nome FROM #Dados WHERE id=@Cont) SET @SubTotal = @SubTotal + (SELECT valor FROM #Dados WHERE id=@Cont) SET @Total = @Total + (SELECT valor FROM #Dados WHERE id=@Cont) SET @Cont = @Cont + 1 SET @Nome = (SELECT nome FROM #Dados WHERE id=@Cont) IF @Nome <> '' OR @nome IS null BEGIN PRINT @SubTotal SET @SubTotal = 0 END END PRINT @Total Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 WesSouza Postado Fevereiro 29, 2012 Autor Denunciar Share Postado Fevereiro 29, 2012 Boa tarde WesSouza, Ficaria mais fácil você alterar o script e visualizar todos os dados de retorno.... Segue um exemplo com o loop:-- criando tabela create TABLE #Dados (id int identity, nome VARCHAR(15), valor int) -- inserindo dados INSERT INTO #Dados VALUES ('Elisabeth', 2443) INSERT INTO #Dados VALUES ('', 2443) INSERT INTO #Dados VALUES ('', 2443) INSERT INTO #Dados VALUES ('', 2443) INSERT INTO #Dados VALUES ('Rota', 1000) INSERT INTO #Dados VALUES ('', 1000) INSERT INTO #Dados VALUES ('', 1000) INSERT INTO #Dados VALUES ('', 1000) -- fazendo a somatória - selecionar até o final e executar DECLARE @Cont INT DECLARE @Nome VARCHAR(15) DECLARE @SubTotal INT DECLARE @Total INT SET @Cont = 1 SET @SubTotal = 0 SET @Total = 0 WHILE (@Cont <= (SELECT COUNT(nome) FROM #Dados)) BEGIN SET @Nome = (SELECT nome FROM #Dados WHERE id=@Cont) SET @SubTotal = @SubTotal + (SELECT valor FROM #Dados WHERE id=@Cont) SET @Total = @Total + (SELECT valor FROM #Dados WHERE id=@Cont) SET @Cont = @Cont + 1 SET @Nome = (SELECT nome FROM #Dados WHERE id=@Cont) IF @Nome <> '' OR @nome IS null BEGIN PRINT @SubTotal SET @SubTotal = 0 END END PRINT @TotalBom Obrigado PElo exemplo mas preciso de Todas as informções na consulta, preciso um em que mostre todos os campos e valores com o Total geral Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 29, 2012 Denunciar Share Postado Fevereiro 29, 2012 Este foi um exemplo da implementação.... ai você terá q fazer as implementações devidas. Ainda acho mais fácil retornar todos os campos no resultset.... as manipulações e implementações poderão ser realizadas via código fonte. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
WesSouza
Bom possuo uma consulta Sql Que efetua soma do campo valor_deposito Corretamente...
Mas gostaria que tambem exibixe um total geral a cada diferente cod_processo :mellow:
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.