SQL Retornando linhas duplicadas
21/02/2022
0
Montei o SQL abaixo, porém quando inclui a condição CASE, está retornando linhas duplicadas, alguém pode ajudar?
Segue abaixo consulta:
SELECT DISTINCT FF.CODCOLIGADA,
FF.CHAPA,
P.NOME,
P.CODSITUACAO,
P.CODFILIAL,
P.CODSECAO,
RAT.CODCCUSTO,
CUST.NOME AS ''NOME CENTRO DE CUSTO'',
FF.MESCOMP,
FF.ANOCOMP,
FF.NROPERIODO,
FF.LIQUIDO,
SEC.DESCRICAO,
(CASE
WHEN MOV.CODEVENTO IN ( ''0075'' ) THEN MOV.VALOR
ELSE 0
END) AS ''GRATIFICACAO E PREMIO'' /*@Weverton GRATIFICACAO E PREMIO*/
FROM PFPERFF AS FF WITH (NOLOCK)
INNER JOIN PFUNC AS P WITH (NOLOCK)
ON P.CODCOLIGADA = FF.CODCOLIGADA
AND P.CHAPA = FF.CHAPA
INNER JOIN PFRATEIOFIXO AS RAT WITH (NOLOCK)
ON RAT.CODCOLIGADA = P.CODCOLIGADA
AND RAT.CHAPA = P.CHAPA
INNER JOIN GCCUSTO AS CUST WITH (NOLOCK)
ON CUST.CODCOLIGADA = RAT.CODCOLIGADA
AND CUST.CODCCUSTO = RAT.CODCCUSTO
INNER JOIN PFMOVCC MOV
ON FF.CODCOLIGADA = MOV.CODCOLIGADA
AND FF.CHAPA = MOV.CHAPA
AND FF.ANOCOMP = MOV.ANOCOMP
AND FF.MESCOMP = MOV.MESCOMP
AND FF.NROPERIODO = MOV.NROPERIODO
INNER JOIN PSECAO AS SEC
ON P.CODCOLIGADA = SEC.CODCOLIGADA
AND P.CODSECAO = SEC.CODIGO
WHERE ( FF.CODCOLIGADA = 1 )
AND ( FF.MESCOMP = 11 )
AND ( FF.ANOCOMP = 2021 )
AND ( FF.NROPERIODO = 2 )
GROUP BY FF.CODCOLIGADA,
FF.CHAPA,
P.NOME,
P.CODSITUACAO,
P.CODFILIAL,
P.CODSECAO,
RAT.CODCCUSTO,
CUST.NOME,
FF.MESCOMP,
FF.ANOCOMP,
FF.NROPERIODO,
FF.LIQUIDO,
SEC.DESCRICAO,
MOV.VALOR,
MOV.CODEVENTO
Weverton Lemos
Posts
21/02/2022
Emerson Nascimento
21/02/2022
Weverton Lemos
SELECT FF.CODCOLIGADA, FF.CHAPA, P.NOME, P.CODSITUACAO, P.CODFILIAL, P.CODSECAO, RAT.CODCCUSTO, CUST.NOME AS 'NOME CENTRO DE CUSTO', FF.MESCOMP, FF.ANOCOMP, FF.NROPERIODO, FF.LIQUIDO, SEC.DESCRICAO, ( CASE WHEN MOV.CODEVENTO IN ( '0075' ) THEN MOV.VALOR ELSE 0 END ) AS 'GRATIFICACAO E PREMIO' /*@Weverton GRATIFICACAO E PREMIO*/ FROM PFPERFF AS FF WITH (NOLOCK) INNER JOIN PFUNC AS P WITH (NOLOCK) ON P.CODCOLIGADA = FF.CODCOLIGADA AND P.CHAPA = FF.CHAPA INNER JOIN PFRATEIOFIXO AS RAT WITH (NOLOCK) ON RAT.CODCOLIGADA = P.CODCOLIGADA AND RAT.CHAPA = P.CHAPA INNER JOIN GCCUSTO AS CUST WITH (NOLOCK) ON CUST.CODCOLIGADA = RAT.CODCOLIGADA AND CUST.CODCCUSTO = RAT.CODCCUSTO INNER JOIN PFMOVCC MOV ON FF.CODCOLIGADA = MOV.CODCOLIGADA AND FF.CHAPA = MOV.CHAPA AND FF.ANOCOMP = MOV.ANOCOMP AND FF.MESCOMP = MOV.MESCOMP AND FF.NROPERIODO = MOV.NROPERIODO LEFT OUTER JOIN PSECAO AS SEC ON P.CODCOLIGADA = SEC.CODCOLIGADA AND P.CODSECAO = SEC.CODIGO WHERE ( FF.CODCOLIGADA = :COLIGADA ) AND ( FF.MESCOMP = :MES ) AND ( FF.ANOCOMP = :ANO ) AND ( FF.NROPERIODO = :PERIODO ) GROUP BY FF.CODCOLIGADA, FF.CHAPA, P.NOME, P.CODSITUACAO, P.CODFILIAL, P.CODSECAO, RAT.CODCCUSTO, CUST.NOME, FF.MESCOMP, FF.ANOCOMP, FF.NROPERIODO, FF.LIQUIDO, SEC.DESCRICAO, MOV.CODEVENTO, MOV.VALOR ORDER BY P.NOME Sempre me perco nessas consultas grandes....
22/02/2022
Weverton Lemos
Bom Dia Emerson!
Já removi até o Group By e mesmo assim continua duplicando creio que o problema esteja no CASE, poderia me ajudar? Preciso trazer a coluna de eventos....
SELECT FF.CODCOLIGADA, FF.CHAPA, P.NOME, P.CODSITUACAO, P.CODFILIAL, P.CODSECAO, RAT.CODCCUSTO, CUST.NOME AS 'NOME CENTRO DE CUSTO', FF.MESCOMP, FF.ANOCOMP, FF.NROPERIODO, SEC.DESCRICAO, FF.LIQUIDO, ( CASE WHEN MOV.CODEVENTO IN ( '0075' ) THEN MOV.VALOR ELSE 0 END ) AS 'GRATIFICACAO E PREMIO' /*@Weverton GRATIFICACAO E PREMIO*/ FROM PFPERFF AS FF WITH (NOLOCK) INNER JOIN PFUNC AS P WITH (NOLOCK) ON P.CODCOLIGADA = FF.CODCOLIGADA AND P.CHAPA = FF.CHAPA INNER JOIN PFRATEIOFIXO AS RAT WITH (NOLOCK) ON RAT.CODCOLIGADA = P.CODCOLIGADA AND RAT.CHAPA = P.CHAPA INNER JOIN GCCUSTO AS CUST WITH (NOLOCK) ON CUST.CODCOLIGADA = RAT.CODCOLIGADA AND CUST.CODCCUSTO = RAT.CODCCUSTO INNER JOIN PFMOVCC MOV ON FF.CODCOLIGADA = MOV.CODCOLIGADA AND FF.CHAPA = MOV.CHAPA AND FF.ANOCOMP = MOV.ANOCOMP AND FF.MESCOMP = MOV.MESCOMP AND FF.NROPERIODO = MOV.NROPERIODO LEFT OUTER JOIN PSECAO AS SEC ON P.CODCOLIGADA = SEC.CODCOLIGADA AND P.CODSECAO = SEC.CODIGO WHERE ( FF.CODCOLIGADA = :COLIGADA ) AND ( FF.MESCOMP = :MES ) AND ( FF.ANOCOMP = :ANO ) AND ( FF.NROPERIODO = :PERIODO ) ORDER BY P.NOME
Clique aqui para fazer login e interagir na Comunidade :)