Ir para conteúdo
Fórum Script Brasil
  • 0

Unir dados de duas tabelas


mantovanilh

Pergunta

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?

   
     
     
     
     
  •  
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...