Select com IF

SQL Server

18/02/2011

Pessoal estou com a seguinte situação:   Preciso lista a soma de proventos de cada Mês por local(departamento), com essa query consigo fazer isso, porém o problema é que a tabela R038HLO é de histórico, ou seja armazena registros de tranferencias de local, com isso para cada registro na tabela R038HLO o valor será repetido. Preciso criar uma condição que verifique o local que o colaborador estava conforme o R044CAL.PerRef utilizando a R038HLO.DatAlt.   No exemplo abaixo estou listando a soma dos eventos do colaborador 1561 no periodo de Janeiro até Março Como existe dois históricos na tabela R038HLO o os valores são apresentados duas vezes para cada Periodo onde deveria ficar assim: NumCad NumLoc PerRef Soma_ValEve 1561 178 2010-01-01 1823,08 1561 331 2010-02-01 1823,08 1561 331 2010-03-01 1823,08     Obrigado.
Jorge Junior

Jorge Junior

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

18/02/2011

creio ser problema no seu agrupamento.

poste a instrução SQL para que possamos analisa-la.
GOSTEI 0
Jorge Junior

Jorge Junior

18/02/2011

é esse anexo.   SELECT r034fun.numcad, R038HLO.NumLoc, R044CAL.PerRef, SUM(R046VER.ValEve) AS Soma_ValEve FROM R038HLO INNER JOIN r034fun ON R038HLO.NumEmp = r034fun.numemp AND R038HLO.TipCol = r034fun.tipcol AND R038HLO.NumCad = r034fun.numcad INNER JOIN R046VER ON r034fun.numemp = R046VER.NumEmp AND r034fun.tipcol = R046VER.TipCol AND r034fun.numcad = R046VER.NumCad INNER JOIN R044CAL ON R046VER.NumEmp = R044CAL.NumEmp AND R046VER.CodCal = R044CAL.CodCal INNER JOIN R008EVC ON R046VER.TabEve = R008EVC.CodTab AND R046VER.CodEve = R008EVC.CodEve WHERE (r034fun.numcad = 1561) AND (R044CAL.PerRef BETWEEN '2010-01-01' AND '2010-03-01') AND (R008EVC.TipEve = 1) AND (R044CAL.TipCal = 11) GROUP BY r034fun.numcad, R038HLO.NumLoc, R044CAL.PerRef Sds.
GOSTEI 0
POSTAR