none
select sum somente em campos com valores diferentes RRS feed

  • Pergunta

  • ola amigos boa noite

    tenho um select que retorna a soma de processos, porem ele tem q somar somentes os processos com valores diferentes do campo n_processos

     

    tipo:

    processo valor: 3000           n_processo:22

    processo valor: 5000          n_processo: 22

    processo valor 2000           n_processo: 12

     

     

    ou seja ele some somente o campo n_processo : 22 e o 12

    deixando 1 de lado

    deu para en tender?

     

    obrigado


    Software Lagos Automação Comercial Cabo Frio - RJ
    segunda-feira, 17 de janeiro de 2011 22:16

Respostas

  • resolvi dessa forma:

    SELECT  sum(Distinct CLIENTES_ESPECIAL.VALOR_PROCESSO) FROM CLIENTES_ESPECIAL ,VENDAS_ESPECIAL,PRODUTOS WHERE VENDAS_ESPECIAL.CODIGOCLIENTE_ES=CLIENTES_ESPECIAL.ID_CL_ESPECIAL AND VENDAS_ESPECIAL.IDPRODUTO=PRODUTOS.ID_PRODUTOS and VENDAS_ESPECIAL.QUANTIDADE >0 and MONTH (VENDAS_ESPECIAL.DATA) = MONTH(GETDATE()) and year (VENDAS_ESPECIAL.DATA) = year(GETDATE())

     

    pronto conseguir, mais muito obrigado pela ajuda de vocês

     

    boa tarde


    Software Lagos Automação Comercial Cabo Frio - RJ
    terça-feira, 18 de janeiro de 2011 18:36

Todas as Respostas

  • Thiago,

    Sinceramente, sua dúvida não ficou muito clara... o que entendi é que você quer realizar a soma dos valores dos processos agrupando por número de processo, o que ficaria algo assim:

    SELECT

        n_processo,

        SUM(processo_valor) as soma

    FROM

        <sua_tabela>

    GROUP BY n_processo

     

    É isso?!

     

    []'s


    Erickson Ricci - MCP, MCTS, MCTS BI - ericksonricci.wordpress.com
    terça-feira, 18 de janeiro de 2011 01:09
  • obrigado pela resposta, porem não é isso.

    eu quero fazer um sum somente em campos que nao tenha valores repetidos no campo n_processo

    ou seja vou somar o campo valor_processo porem somente naqueles com valores não repeditos do campo n_processos

     

     

    deu para entender?

     

    bom dia


    Software Lagos Automação Comercial Cabo Frio - RJ
    terça-feira, 18 de janeiro de 2011 09:57
  • Thiago,

    Agora ficou claro. Vejo uma maneira de resolver seu problema e é o seguinte:

     

    use tempdb

    create table processos ( n_processo int, val_processo decimal(10,2) )

    insert into processos values (1, 10.5)
    insert into processos values (1, 37.6)
    insert into processos values (2, 75.8)
    insert into processos values (3, 20.0)
    insert into processos values (4, 88.6)
    insert into processos values (4, 30.0)
    insert into processos values (5, 45.7)
    insert into processos values (6, 33.3)

    select * from processos

    ;with count_processos (n_processo, qtde)
    as
    (
        select p2.n_processo, count(1)
        from processos p2
        group by p2.n_processo
    )
    select
        p.n_processo, sum(val_processo) as soma
    from
        processos p
        inner join count_processos cp
            on p.n_processo = cp.n_processo
    where
        cp.qtde = 1
    group by
        p.n_processo

     

    Criei uma tabela simulando a situação que você tem, com alguns registros onde o número do processo é repetido e estes não devem ser somados. Com a CTE eu conto a quantidade de processos e na consulta principal realizo a soma dos processos que aparecem somente uma vez.

    Qualquer dúvida, fique a vontade para questionar.

     

    Abraço


    Erickson Ricci - MCP, MCTS, MCTS BI - ericksonricci.wordpress.com
    terça-feira, 18 de janeiro de 2011 10:09
  • ficou um pouco confuso mais vou testar, e outra esse select tem que ser unico, pode ate ter select dentro de select porem nao pode ter select separado.

    pelo motivo que vai me retornar um unico valor que vou jogar para a minha aplicação.

     

    obrigado


    Software Lagos Automação Comercial Cabo Frio - RJ
    terça-feira, 18 de janeiro de 2011 11:08
  • Thiago,

     

    Eu recomendo a leitura dos seguintes posts do Thiago Zavaschi para um melhor entendimento sobre CTEs:

    http://thiagozavaschi.spaces.live.com/blog/cns!8DE5A8EFC1819ECA!390.entry

    http://thiagozavaschi.spaces.live.com/blog/cns!8DE5A8EFC1819ECA!391.entry?sa=469618807

     

    []'s


    Erickson Ricci - MCP, MCTS, MCTS BI - ericksonricci.wordpress.com
    terça-feira, 18 de janeiro de 2011 11:19
  • Vou tentar aqui obrigado
    Software Lagos Automação Comercial Cabo Frio - RJ
    terça-feira, 18 de janeiro de 2011 11:31
  • Gostei do seu exemplo, Erickson, ficou muito bom!
    terça-feira, 18 de janeiro de 2011 15:00
  • amigo eu tentei porem não deu mto certo, to usando esse select:

     

    SELECT  SUM(CLIENTES_ESPECIAL.VALOR_PROCESSO) as total FROM CLIENTES_ESPECIAL ,VENDAS_ESPECIAL,PRODUTOS WHERE VENDAS_ESPECIAL.CODIGOCLIENTE_ES=CLIENTES_ESPECIAL.ID_CL_ESPECIAL AND VENDAS_ESPECIAL.IDPRODUTO=PRODUTOS.ID_PRODUTOS and VENDAS_ESPECIAL.QUANTIDADE >0 and MONTH (VENDAS_ESPECIAL.DATA) = MONTH(GETDATE()) and year (VENDAS_ESPECIAL.DATA) = year(GETDATE())

    porem ta fazendo aquilo que falei antes


    Software Lagos Automação Comercial Cabo Frio - RJ
    terça-feira, 18 de janeiro de 2011 15:52
  • resolvi dessa forma:

    SELECT  sum(Distinct CLIENTES_ESPECIAL.VALOR_PROCESSO) FROM CLIENTES_ESPECIAL ,VENDAS_ESPECIAL,PRODUTOS WHERE VENDAS_ESPECIAL.CODIGOCLIENTE_ES=CLIENTES_ESPECIAL.ID_CL_ESPECIAL AND VENDAS_ESPECIAL.IDPRODUTO=PRODUTOS.ID_PRODUTOS and VENDAS_ESPECIAL.QUANTIDADE >0 and MONTH (VENDAS_ESPECIAL.DATA) = MONTH(GETDATE()) and year (VENDAS_ESPECIAL.DATA) = year(GETDATE())

     

    pronto conseguir, mais muito obrigado pela ajuda de vocês

     

    boa tarde


    Software Lagos Automação Comercial Cabo Frio - RJ
    terça-feira, 18 de janeiro de 2011 18:36