Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
mantovanilh

Unir dados de duas tabelas

Question

Estou montando uma planilha que traga todas as Seções que aparecem na tabela PFHSTSEC (Histórico de Seção) porém que também traga quais foram as funções (PFHSTFCO que estiveram em cada seção pelo período de data de cada tabela.

Consegui montar um select que traga isto, porém quando tem intersecção como no Exemplo abaixo.

Histórico de Seção

18/07/2005    01.01.08.03.01    LOGISTICA
01/06/2006    01.01.08.05.01    EST PROD ACAB.
01/05/2007    01.03.01.06.01    CPD
09/09/2011    01.03.01.03.01    INFORMÁTICA
 

Histórico de Função

18/07/2005    117    AUX DE EXPEDICAO
01/10/2005    118    AUX DE ALMOXARIFADO
01/05/2007    132    AUX DE SUPORTE 
01/07/2008    179    ANALISTA DE SUPORTE
01/12/2012    202    ANALISTA DE SUPORTE PL
01/03/2015    311    ANALISTA INFRAESTRUTURA PL
01/01/2017    362    ANALISTA INFRAESTRUTURA SR
 

O resultado que necessito é conforme abaixo:

SEÇÃO PERÍODO FUNÇÃO
Logística 18/07/2005 à 31/05/2006 117 e 118
Estoque 01/06/2006 a 30/04/2007 118
CPD 01/05/2007 à 08/09/2011 132 e 179
Informática 09/09/2011 até hoje 179, 202, 311, 262

 

Com isto montei o script abaixo

SELECT DISTINCT X.*
FROM (
SELECT A.CODSECAO
     , PSECAO.DESCRICAO
     , (SELECT X.CODFUNCAO
        FROM PFHSTFCO X LEFT JOIN PFUNCAO X1 ON 
                      X.CODCOLIGADA=X1.CODCOLIGADA
             AND      X.CODFUNCAO=X1.CODIGO
        WHERE X.CODCOLIGADA=A.CODCOLIGADA
        AND X.CHAPA=A.CHAPA 
        AND X.DTMUDANCA = (SELECT MAX(X.DTMUDANCA)
                           FROM PFHSTFCO X LEFT JOIN PFUNCAO X1 ON 
                                       X.CODCOLIGADA=X1.CODCOLIGADA
                              AND      X.CODFUNCAO=X1.CODIGO
                         WHERE X.CODCOLIGADA=A.CODCOLIGADA
                         AND X.CHAPA=A.CHAPA 
                         AND X.DTMUDANCA <= A.DTMUDANCA) 
       ) CODFUNCAO
     , (SELECT X1.NOME
        FROM PFHSTFCO X LEFT JOIN PFUNCAO X1 ON 
                      X.CODCOLIGADA=X1.CODCOLIGADA
             AND      X.CODFUNCAO=X1.CODIGO
        WHERE X.CODCOLIGADA=A.CODCOLIGADA
        AND X.CHAPA=A.CHAPA 
        AND X.DTMUDANCA = (SELECT MAX(X.DTMUDANCA)
                           FROM PFHSTFCO X LEFT JOIN PFUNCAO X1 ON 
                                       X.CODCOLIGADA=X1.CODCOLIGADA
                              AND      X.CODFUNCAO=X1.CODIGO
                         WHERE X.CODCOLIGADA=A.CODCOLIGADA
                         AND X.CHAPA=A.CHAPA 
                         AND X.DTMUDANCA<=A.DTMUDANCA)) FUNCAO
     
FROM PFHSTSEC A LEFT JOIN PFUNC B ON 
              A.CODCOLIGADA = B.CODCOLIGADA
     AND      A.CHAPA = B.CHAPA
              JOIN PSECAO ON
                   A.CODCOLIGADA = PSECAO.CODCOLIGADA
              AND  A.CODSECAO = PSECAO.CODIGO
WHERE A.CODCOLIGADA = 1
    AND A.CHAPA = '3109'
) X
WHERE CODSECAO IS NOT NULL
AND   CODFUNCAO IS NOT NULL
ORDER BY 1, 3

 

 

 

Mas o resultado que o meu script retorna é o seguinte:

SEÇÃO PERÍODO FUNÇÃO
Logística 18/07/2005 A 30/09/2005 117
Estoque 01/10/2005 A 30/04/2007 118
CPD 01/05/2007 A 30/06/2008 132
Informática 01/07/2008 A 30/11/2012 179

 

Resumindo não esta trazendo todos os códigos de funções que deveriam e no último registro retorna apenas 1 item e não 4 que seria o correto.

 

Poderiam me ajudar?

   
     
     
     
     
  •  

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148409
    • Total Posts
      643823
×
×
  • Create New...