Usuário com melhor resposta
select sum somente em campos com valores diferentes

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
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- Marcado como Resposta thiago pires pereira 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 -
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 -
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_processoCriei 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- Sugerido como Resposta Erickson F. D. Ricci terça-feira, 18 de janeiro de 2011 10:11
-
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 -
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 -
-
-
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 -
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- Marcado como Resposta thiago pires pereira terça-feira, 18 de janeiro de 2011 18:36