SQL Retornando linhas duplicadas

21/02/2022

0

Boa Noite Pessoal!

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

Weverton Lemos

Responder

Posts

21/02/2022

Emerson Nascimento

talvez seja necessário repetir o case no group by
Responder

21/02/2022

Weverton Lemos

talvez seja necessário repetir o case no group by
Boa Noite! Então já tentei mais não consigo.... tentei de tudo.....

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....
Responder

22/02/2022

Weverton Lemos

talvez seja necessário repetir o case no group by


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 

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar