Ir para conteúdo
Anúncios Publicitários
ullyoliveira

Retorno de varias linha da mesma chapa

Recommended Posts

Boa tarde,

estou fazendo uma sql para retornar quantas h.e o funcionário teve no mÊs, separado por faixa de 60%, 100%n(tudo na mesma linha, em colunas separadas) e tal, porém ele retorna varias linhas da mesma pessoa. Poderiam me ajudar?

segue o select que estou usando.

SELECT AMOVFUN.CHAPA,
       PFUNC.NOME,
       CASE
         WHEN AMOVFUN.CODEVE = 1313 THEN AMOVFUN.NUMHORAS / 60
       END,
       CASE
         WHEN AMOVFUN.CODEVE = 1311 THEN AMOVFUN.NUMHORAS / 60
       END,
       CASE
         WHEN AMOVFUN.CODEVE = 1317 THEN AMOVFUN.NUMHORAS / 60
       END
FROM   AMOVFUN
INNER JOIN PFUNC ON PFUNC.CHAPA = AMOVFUN.CHAPA
               
WHERE  AMOVFUN.MESCOMP = 9 

 

o retorno esta assim

CHAPA    NOME                                          50%      60%    100%
000025    MARCELO IVAN RIBEIRO           6    
000025    MARCELO IVAN RIBEIRO                                  27
000025    MARCELO IVAN RIBEIRO            

 

 

e teria que ser assim:

CHAPA    NOME                                          50%      60%    100%
000025    MARCELO IVAN RIBEIRO           6    
    0             27

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ully,

Veja se isso te ajuda, não sei qual a versão do SQL por isso fiz dessa maneira porém se estiver utilizando a versão 2008 pra cima do SQL existe a funcionalidade PIVOT nativamente.

https://docs.microsoft.com/pt-br/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

 

SELECT AMOVFUN.CHAPA,
       PFUNC.NOME,
       MAX(CASE WHEN AMOVFUN.CODEVE = 1313 THEN AMOVFUN.NUMHORAS / 60 END) [CINQUENTA],
       MAX(CASE WHEN AMOVFUN.CODEVE = 1311 THEN AMOVFUN.NUMHORAS / 60 END) [SESSENTA],
       MAX(CASE WHEN AMOVFUN.CODEVE = 1317 THEN AMOVFUN.NUMHORAS / 60 END) [CEM]
FROM   
    AMOVFUN (NOLOCK) INNER JOIN PFUNC (NOLOCK) ON 
    PFUNC.CHAPA = AMOVFUN.CHAPA
WHERE  
    AMOVFUN.MESCOMP = 9 
GROUP BY
    AMOVFUN.CHAPA,
    PFUNC.NOME

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente desta maneira.

SELECT PFUNC.CHAPA,
A.NUMHORAS / 60,
B.NUMHORAS / 60,
C.NUMHORAS / 60


FROM PFUNC

INNER JOIN AMOVFUN A ON PFUNC.CODCOLIGADA = A.CODCOLIGADA
                    AND PFUNC.CHAPA  =    A.CHAPA
                    AND A.CODEVE = '1313'
                    
INNER JOIN AMOVFUN B ON PFUNC.CODCOLIGADA = B.CODCOLIGADA
                    AND PFUNC.CHAPA  =    B.CHAPA
                    AND B.CODEVE = '1311'
                    
INNER JOIN AMOVFUN C ON PFUNC.CODCOLIGADA = C.CODCOLIGADA
                    AND PFUNC.CHAPA  =    C.CHAPA
                    AND C.CODEVE = '1317'                                                            

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Important Information

Usando este site, você concorda com nossos Termos de Uso.