Davis 0 Denunciar post Postado Fevereiro 20, 2007 Tenho que extrair os dados de algumas tabelas agrupando pelo código de ação. Ok, isso eu já fiz. O problema é que eu também tenho que exibir um subtotal para cada ação. Abaixo um exemplinho de como deveria ficar a gridview: ID Ação | Nome | Doação00001 | aaaa | R$ 1000001 | bbbb | R$ 20 Subtotal: R$ 3000002 | aaaa | R$ 500002 | aaaa | R$ 1500002 | aaaa | R$ 25 Subtotal: R$ 45 Total: R$ 75 Tem alguma maneira de se fazer isso? O SQL tá mais ou menos assim: SELECT id_acao, nome, valor FROM Acoes GROUP BY id_acao Então? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Juliano.net 2 Denunciar post Postado Fevereiro 22, 2007 Sugiro que no evento RowDataBound voce verifique se a linha atual eh o rodape, ou seja, o footer do GridView e execute um novo SQL com a soma, ou ate mesmo va' somando linha por linha e depois exiba o total no footer. Compartilhar este post Link para o post Compartilhar em outros sites
eriva_br 7 Denunciar post Postado Fevereiro 24, 2007 se estiver usando o SQL Server, tem a função COMPUTE, com ela é possível realizar sub-totais e totais exemplo: set nocount ondeclare @tab table (IDAcao int, Nome varchar(10), doacao money)insert into @tab (IDAcao, Nome, doacao) values (1, 'aaaa', 10)insert into @tab (IDAcao, Nome, doacao) values (1, 'bbbb', 20)insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 5)insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 15)insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 25)select IDAcao, Nome, doacao from @taborder by IDAcaocompute sum(doacao) by IDAcaocompute sum(doacao)só que desta forma irá gerar múltiplos result-sets (por grupo) resultado da query acima: IDAcao Nome doacao ----------- ---------- --------------------- 1 aaaa 10.00001 bbbb 20.0000 sum ===================== 30.0000IDAcao Nome doacao ----------- ---------- --------------------- 2 aaaa 5.00002 aaaa 15.00002 aaaa 25.0000 sum ===================== 45.0000 sum ===================== 75.0000 Compartilhar este post Link para o post Compartilhar em outros sites
eriva_br 7 Denunciar post Postado Fevereiro 24, 2007 descobri essa tb. WITH ROLLUP tb. faz somatórios, só que permanece no mesmo result-set, desta forma creio que não vai ter problemas para mostrar no gridview: set nocount ondeclare @tab table (IDAcao char(5), Nome varchar(10), doacao money)insert into @tab (IDAcao, Nome, doacao) values (1, 'aaaa', 10)insert into @tab (IDAcao, Nome, doacao) values (1, 'bbbb', 20)insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 5)insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 15)insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 25)select case when (grouping(IDAcao)=1) then 'TOTAL' else isnull(IDAcao, 'desconhecido') end as IDAcao, case when (grouping(Nome)=1) then 'SUB-TOTAL' else isnull(Nome, 'desconhecido') end as IDAcao, sum(doacao) as doacao from @tabgroup by IDAcao , Nome WITH ROLLUPRESULTADO: IDAcao IDAcao doacao ------ ---------- --------------------- 1 aaaa 10.00001 bbbb 20.00001 SUB-TOTAL 30.00002 aaaa 45.00002 SUB-TOTAL 45.0000TOTAL SUB-TOTAL 75.0000 Compartilhar este post Link para o post Compartilhar em outros sites
eriva_br 7 Denunciar post Postado Fevereiro 24, 2007 e tem tb. o CUBE na query do exemplo anterior se na linha final trocar WITH ROLLUP por WITH CUBE, no final do resultado é adicionado os totais pro grupo (IDAcao) resultado: IDAcao IDAcao doacao ------ ---------- --------------------- 1 aaaa 10.00001 bbbb 20.00001 SUB-TOTAL 30.00002 aaaa 45.00002 SUB-TOTAL 45.0000TOTAL SUB-TOTAL 75.0000TOTAL aaaa 55.0000TOTAL bbbb 20.0000 Compartilhar este post Link para o post Compartilhar em outros sites
Davis 0 Denunciar post Postado Março 19, 2007 Perfeito! Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Elton Luiz Roberts 0 Denunciar post Postado Julho 1, 2009 descobri essa tb. WITH ROLLUP tb. faz somatórios, só que permanece no mesmo result-set, desta forma creio que não vai ter problemas para mostrar no gridview: set nocount on declare @tab table (IDAcao char(5), Nome varchar(10), doacao money) insert into @tab (IDAcao, Nome, doacao) values (1, 'aaaa', 10) insert into @tab (IDAcao, Nome, doacao) values (1, 'bbbb', 20) insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 5) insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 15) insert into @tab (IDAcao, Nome, doacao) values (2, 'aaaa', 25) select case when (grouping(IDAcao)=1) then 'TOTAL' else isnull(IDAcao, 'desconhecido') end as IDAcao, case when (grouping(Nome)=1) then 'SUB-TOTAL' else isnull(Nome, 'desconhecido') end as IDAcao, sum(doacao) as doacao from @tab group by IDAcao , Nome WITH ROLLUP RESULTADO: IDAcao IDAcao doacao ------ ---------- --------------------- 1 aaaa 10.0000 1 bbbb 20.0000 1 SUB-TOTAL 30.0000 2 aaaa 45.0000 2 SUB-TOTAL 45.0000 TOTAL SUB-TOTAL 75.0000 Estou precisando de algo parecido com o que você solucionou, poderia me ajudar?Preciso fazer um fluxo de caixa, segue em anexo a imagem de como gostaria, se puder me ajudar nas tabelas e na consulta, fico agradecido. obs: estou noites sem dormir pesquisando uma maneira de resolver isso. :( Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Julho 1, 2009 Eu acho que a maneira mais fácil é fazer como o eriva comentou, mas ele fica um pouco restrito, não tem como fazer muita coisa. O legal seria usar o RowDataBound como o juliano disse, vai somando os valores das linhas e quando chegar no footer você imprime a soma. Tem um exemplo aqui [1], não é o melhor, mas ajuda. [1] http://forum.devmedia.com.br/viewtopic.php...d07981d108b065e Compartilhar este post Link para o post Compartilhar em outros sites
Elton Luiz Roberts 0 Denunciar post Postado Julho 1, 2009 Eu acho que a maneira mais fácil é fazer como o eriva comentou, mas ele fica um pouco restrito, não tem como fazer muita coisa. O legal seria usar o RowDataBound como o juliano disse, vai somando os valores das linhas e quando chegar no footer você imprime a soma. Tem um exemplo aqui [1], não é o melhor, mas ajuda. [1] http://forum.devmedia.com.br/viewtopic.php...d07981d108b065e Desculpe, esqueci de informar que sou iniciante e estou usando php com mysql. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 1, 2009 Elton eu não vou mover esse tópico por que ele é de 2007 e você não criou seu próprio tópico como deveria ter feito. Vou excluir os posts deste tópico. Poste sua dúvida aqui: PHP Compartilhar este post Link para o post Compartilhar em outros sites