Prof. B@co Postado 26 de Setembro de 2008 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 23 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 155 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 46 Denunciar Compartilhar Postado 26 de Setembro de 2008 Olá Galera blza? Estou com a seguinte situação: Tenho um funcionário que está cadastrado, e este tem Histórico de salarial (se encontra em Base Cálculo > Hist. Salarial) e Histórico de funções (Registro > Hist. Funcao). Quero montar uma sentença SQL que me traz todo o histórico do salário do indivíduo, mas na mesma linha a qual função ele pertencia na época daquele salário. Alguém sabe como trazer isto? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Maffra Postado 26 de Setembro de 2008 Tópicos Que Criei: 15 Tópicos/Dia: 0.00 Meu Conteúdo: 548 Conteúdo/Dia: 0.09 Reputação: 1 Pontos/Conquistas: 2.891 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Denunciar Compartilhar Postado 26 de Setembro de 2008 Edmar, Lembro-me de ter disponibilizado um relatório desse tipo. Dá uma olhadinha num tópico criado pelo Ivan Martinez onde eu anexei esse relatório. Qualquer posta denovo que eu procuro. Att, Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Prof. B@co Postado 26 de Setembro de 2008 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 23 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 155 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 46 Autor Denunciar Compartilhar Postado 26 de Setembro de 2008 Ou doutor tudo bem? Obrigado pela dica, mas é mais ou menos assim: 1 - Seleciono o funcinárim a sua chapa 2 - Quero que ele me mostre todos os históricos salariais 3 - Quero que ele me mostre qual a função daquele funcionário naquele período, lembrando que o meu funcionário terá sempre mais alterações salariais do que de função, assim por exemplo, em uma determinada época em que ele recebe X me traga a função Y, se ele passar a receber K me traga a função Y se ele mudar de salário para M e a função mundar para S então me traga os salário desta função. Quero que imprima em linha pra mim, tipo assim: chapa; nome; data_alteracao_salario; funcao Se o kra tiver três alterações de salários esta linha deve aparecer três vezes. O que eu não estou conseguindo fazer é associar a função dele naquele período em que ele recebia aquele salário? Bom é isto, não sei se consegui me expressar. Eu montei esta sentença SQL: SELECT '0000'+SUBSTRING(A.CHAPA,5,8) MATRICULA, A.DTMUDANCA DATA_MUDANCA, ( SELECT M.CODFUNCAO FROM PFHSTFCO M WHERE M.CHAPA = A.CHAPA AND M.CHAPA = B.CHAPA AND M.DTMUDANCA <= A.DTMUDANCA ) AS CARGO_BASICO, A.SALARIO, B.JORNADAMENSAL, A.DTMUDANCA VIGENCIA FROM PFHSTSAL A, PFUNC B WHERE A.CHAPA = B.CHAPA AND A.CHAPA = 'BCS 7019' Mas ele dá erro pois se o funcionário tiver mais de uma alteração salarial, e nesta alteração ele estiver na mesma função ela dá erro. Tem jeito? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Maffra Postado 26 de Setembro de 2008 Tópicos Que Criei: 15 Tópicos/Dia: 0.00 Meu Conteúdo: 548 Conteúdo/Dia: 0.09 Reputação: 1 Pontos/Conquistas: 2.891 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Denunciar Compartilhar Postado 26 de Setembro de 2008 Jeito tem sim... O problema é que quando você tenta trazer o código da função, você relaciona a data da mudança do histórico de função com a data de mudança do histórico salarial, sendo qua a função deve ser menor ou igual a data do salário. Portanto, se você encontrar um funcionário que tiver outros cargos anteriores vai encontrar mais de um registro. Então você precisa encontrar a função que ele tinha quando ele tava com aquele salário e não todas as funções anteriores. Não estou fazendo teste algum, tá?, só estou indo pela lógica. Tenta nesse seu select interno retornar a última função, utilizando a MAX(DTMUDANCA) por exemplo. Se não conseguir montar posta aí denovo que monto pra vc. Att, Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Prof. B@co Postado 27 de Setembro de 2008 Tópicos Que Criei: 4 Tópicos/Dia: 0.00 Meu Conteúdo: 23 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 155 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 46 Autor Denunciar Compartilhar Postado 27 de Setembro de 2008 Olá meu amigo, tudo bem? Deu certo agora, mas eu tive que colocar duas SUB-QUERY, ficando deste jeito: SELECT '0000'+SUBSTRING(A.CHAPA,5,8) MATRICULA, A.DTMUDANCA DATA_MUDANCA, ( SELECT M.CODFUNCAO FROM PFHSTFCO M WHERE M.CHAPA = A.CHAPA AND M.CHAPA = B.CHAPA AND M.DTMUDANCA = (SELECT MAX(K.DTMUDANCA) FROM PFHSTFCO K WHERE K.CHAPA = A.CHAPA AND K.DTMUDANCA <= A.DTMUDANCA) ) AS CARGO_BASICO, A.SALARIO, B.JORNADAMENSAL, A.DTMUDANCA VIGENCIA FROM PFHSTSAL A, PFUNC B WHERE A.CHAPA = B.CHAPA AND A.CHAPA = 'BCS 7019' Mas funcionou perfeitamente. Muito obrigado pela dica e fica aí para outras pessoas que tem o mesmo problemas. Abraços Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Maffra Postado 28 de Setembro de 2008 Tópicos Que Criei: 15 Tópicos/Dia: 0.00 Meu Conteúdo: 548 Conteúdo/Dia: 0.09 Reputação: 1 Pontos/Conquistas: 2.891 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 44 Denunciar Compartilhar Postado 28 de Setembro de 2008 blz Edmar... Obrigado por postar a sentença aí... com certeza audará outros com necessidades semelhantes. Att, Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.