![]() |
|
Select com sum |
Responder
|
| Autor | |
ajbzagatti
DevSilver (Novo)
Registrado: 30/Novembro/2009 Status Online: Offline Mensagens: 4 |
Citação de Resposta
Tópico: Select com sumEnviado: 30/Novembro/2009 em 13:44 |
|
Olá a todos...
Sou novo aqui no forum e no grupo DEVGOIAS.NET. Só agora conheci este maravilhoso site, e gostaria de parabenizar todos integrantes. Sou meio novato em SQL. Tenho a seguinte tabela: PedidoItem CodCliente CodProduto Operacao Qtde ValorUnitario valortotal 1 1 "V" 10 1,00 10,00 1 2 "V" 1 2,00 2,00 1 1 "B" 1 1,00 1,00 2 1 "V" 5 1,00 5,00 Operacao: "V" Venda, "B" Bonificacao Preciso da soma do campo (valortotal) agrupado por cliente e operacao. Ex: Cliente | Sum(valortotal) as Venda | Sum(Valortotal) as Bonificacao| 1 Cliente 1 12,00 1,00 2 Cliente 2 5,00 0,00 pensei em algo assim, é possivel ? Select CodCli, SUM(Select SUM(VlTotal) Where CodCli=@CodCli AND Operacao = "V" Group By CodCli) as Venda, SUM(Select SUM(VlTotal) Where CodCli=@CodCli AND Operacao = "B" Group By CodCli) as Bonificacao From PedPen Group By CodCli Nao testei o codigo assima. Será que está certo ? Abraços, Angelo. |
|
![]() |
|
BrunoBatista
DevSilver (Novo)
Registrado: 19/Maio/2009 Status Online: Offline Mensagens: 30 |
Citação de Resposta
Enviado: 01/Dezembro/2009 em 20:58 |
|
Boa noite,
De SQL Server eu não conheço muito não, mas creio que não precisava fazer duas sub-consultas, não. E como nas sub-consultas já está realizando a soma não precisaria somar novamente, não. Select CodCli, (Select Sum(ValorTotal) From PedidoItem P1 Where P1.CodCli = P2.CodCli And P1.Operacao = 'V') AS ValorVenda, (Select Sum(ValorTotal) From PedidoItem P3 Where P3.CodCli = P2.CodCli And P3.Operacao = 'B') AS ValorBonificacao From PedidoItem P2 Do jeito que você fez, assim acho que resolve o seu problema. Atenciosamente, Bruno Moreira Batista. |
|
![]() |
|
ajbzagatti
DevSilver (Novo)
Registrado: 30/Novembro/2009 Status Online: Offline Mensagens: 4 |
Citação de Resposta
Enviado: 02/Dezembro/2009 em 16:04 |
|
Bruno, faltou o Group By CodCli.
Sem o Group By o select me retornava dois registros do mesmo CodCli. Colocado o Group By funcionou perfeito. Voce estava brincando com relacao à nao saber muito SQL.(rs) Muito obrigado, valeu amigo. Abraços, Angelo. |
|
![]() |
|
rogeriofaria
DevSilver (Novo)
Registrado: 11/Junho/2008 Status Online: Offline Mensagens: 9 |
Citação de Resposta
Enviado: 02/Dezembro/2009 em 17:52 |
|
Pode ser assim tambem:
SELECT CODCLI, SUM( CASE WHEN OPERACAO = 'V' THEN VALORTOTAL ELSE 0 END) AS VALORVENDA, SUM( CASE WHEN OPERACAO = 'B' THEN VALORTOTAL ELSE 0 END) AS VALORBONIFICACAO FROM PEDIDOITEM GROUP BY CODCLI |
|
![]() |
|
BrunoBatista
DevSilver (Novo)
Registrado: 19/Maio/2009 Status Online: Offline Mensagens: 30 |
Citação de Resposta
Enviado: 03/Dezembro/2009 em 06:08 |
|
Bom dia,
de SQL eu conheço um pouco, de algumas coisas específicas do SQL Server igual ao Rogério citou que eu não sabia. Conheço mais do banco de dados Oracle, nele eu saberia te dar uma solução igual ao do Rogério. Mas está ai um pouco mais fácil que citei. Atenciosamente, Bruno Moreira Batista. |
|
![]() |
|
ajbzagatti
DevSilver (Novo)
Registrado: 30/Novembro/2009 Status Online: Offline Mensagens: 4 |
Citação de Resposta
Enviado: 11/Dezembro/2009 em 11:13 |
|
Olá,
Problema resolvido, funcionou perfeito. Gostaria de agradecer muito aos amigos, Bruno e Rogerio pelas dicas. Valeu moçada... Att, Angelo. |
|
![]() |
|
Responder
|
| Ir para | Permissões do Fórum ![]() você não pode enviar novos tópicos neste fórum você não pode responder os tópicos neste fórum você não pode deletar suas mensagens neste fórum você não pode editar suas mensagens neste fórum você não pode criar enquetes nesse fórum você não pode votar enquetes nesse fórum |