Soma de dados por id

SQL

12/12/2017

Estou tentando fazer a soma de alguns dados de acordo com alguns ids.
ex:
CASE WHEN b.rubrica = (34,51,53,54,55,56,57) THEN SUM(b.valor)END

Mas nao consigo, algn pode me ajudar?
Samila

Samila

Curtidas 0

Melhor post

Fabio Parreira

Fabio Parreira

12/12/2017

CASE WHEN b.rubrica IN (34,51,53,54,55,56,57) THEN SUM(b.valor)END

Use o operador IN.
GOSTEI 1

Mais Respostas

Samila

Samila

12/12/2017

Eu tentei com IN, mas tbm n funciona! obrigada
GOSTEI 1
Johnny

Johnny

12/12/2017

Boa noite,
a sintaxe do código está incorreta.

use a seguinte:
 select
    case
      when B.RUBRICA in (34, 51, 53, 54, 55, 56, 57) then sum(B.VALOR)
    end as VALOR
from
    NOME_TABELA
group by
    B.RUBRICA   
GOSTEI 0
Fabio Parreira

Fabio Parreira

12/12/2017

Poderia postar seu select para analizarmos?
GOSTEI 0
Samila

Samila

12/12/2017

select '2' as tipo_registro,
a.empresa ,
--Unidade
a.matricula,
(select sum(b.valor)
from p_trabalhadores_folhas_rub b
where b.rubrica in (1,74,80,94)) as novo

--TotalProventos
--TotalDescontos
-- a.salario_liquido

from p_trabalhadores_folhas a
where a.competencia between '2002.08.01' and '2002.08.31'


o sistema trava, não sei mais o que fazer!
GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

12/12/2017

Tente dessa forma.

select
    sum(case when B.RUBRICA in (34, 51, 53, 54, 55, 56, 57) then 1  else  0 end) as VALOR
from
    NOME_TABELA
group by
    B.RUBRICA
GOSTEI 0
Fabio Parreira

Fabio Parreira

12/12/2017

select
'2' as tipo_registro,
a.empresa ,
--Unidade
a.matricula,
sum(valor)
from
p_trabalhadores_folhas_rub
where
rubrica in (1,74,80,94)
and competencia between '2002.08.01' and '2002.08.31'
group by
a.empresa,
a.matricula

Não seria isso?

meu skype: parreirafabio

Qualquer dúvida me chame, assim dá para entender melhor sua dúvida.
GOSTEI 0
POSTAR