Ir para conteúdo
Fórum Script Brasil

mantovanilh

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre mantovanilh

mantovanilh's Achievements

0

Reputação

  1. 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?
×
×
  • Criar Novo...