none
Criação de Query

    Pergunta

  • Galera, boa noite. Help

    Tenho minha tabela CONTROLEGERALRH$

    Estrutura:

    Id_Funcionairo bigint

    Nome varchar(50),

    CPF Numeric(11,0)

    Colaborador_ID bigint

    Tenho outra Tabela tblFuncionario

    Estrutura:

    Funcionario_ID bigint

    Nome varchar(50),

    CPF Numeric(9,0)

    DigitoCPF Numeric(2,0)

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Eu tenho que verificar, quais CPFS da minha tabela CONTROLEGERALRH, tem na minha tabela tblFuncionario, fazendo isso, tenho que dar uma (Update na minha tabela CONTROLEGERALRH$, tenho que pegar o Funcionario_ID da minha tabela tblFuncionario e jogar no campo Colaborador_ID da minha tabela CONTROLEGERALRH$.

    Quais funções utilizo para montar essa query?

    Obrigado.

    quarta-feira, 11 de dezembro de 2013 21:36

Respostas

  • Giovani, boa tarde.

    Resolvi com essa query.

    SELECT 
                COR.Colaborador_NumeroCPF as CPF,
                COR.Colaborador_ID,
                RH.NOME,COR.COLABORADOR_NOME
    FROM        tblCorColaborador COR INNER JOIN ControleGeralRH$ RH
                ON COR.Colaborador_NumeroCPF*100+COR.Colaborador_DigitoCPF = RH.CPF
    GROUP BY    COR.Colaborador_NumeroCPF,COR.Colaborador_ID,RH.NOME,COR.Colaborador_Nome,COR.Colaborador_PIS
    HAVING      COUNT(COR.Colaborador_NumeroCPF*100+COR.Colaborador_DigitoCPF) = 1
    

    Obrigado a todos !

    • Marcado como Resposta Felipe Torralvo quarta-feira, 18 de dezembro de 2013 20:56
    quarta-feira, 18 de dezembro de 2013 20:56

Todas as Respostas

  • Boa noite,

    Experimente dessa forma:

    update c
    set Colaborador_ID = f.Funcionario_ID
    from ControleGeralRH as c
    inner join tblFuncionario as f
        on f.CPF = c.CPF

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 11 de dezembro de 2013 22:28
  • Felipe, achei um pouco confusa a descrição; só compreendi a primeira frase. Poderia postar exemplos?

    "Eu tenho que verificar, quais CPFS da minha tabela CONTROLEGERALRH, tem na minha tabela tblFuncionario,"

    -- opção 1
    SELECT CPF from CONTROLEGERALRH$
    intersect
    SELECT (CPF*100 + DigitoCPF) as CPF from tblFuncionario;
    -- opção 2
    SELECT CPF from CONTROLEGERALRH$ as R where exists (SELECT * from tblFuncionario as F where F.CPF = floor(R.CPF / 100));

     
    Seria isto? 

    UPDATE RH
      set Colaborador_ID = F.Funcionario_ID
      from CONTROLEGERALRH$ as RH inner join
           tblFuncionario as F on RH.CPF = (F.CPF*100 + F.DigitoCPF);


        José Diz     Belo Horizonte, MG - Brasil
    (Se encontrou a solução nesta resposta, ou se o conteúdo foi útil, lembre-se de marcá-la)


    • Editado Jose.Diz quinta-feira, 12 de dezembro de 2013 11:11 (otimização opção 2)
    • Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 13 de dezembro de 2013 16:45
    quarta-feira, 11 de dezembro de 2013 22:54
  • Boa tarde Felipe,

    Você chegou a testar alguma sugestão que lhe foi passada?

    Caso alguma delas funcione não esqueça de marcar como resposta para fechar a sua Thread, e, caso tenha encontrado alguma solução poste a mesma para auxiliar outros usuários.

    Att,

    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 18 de dezembro de 2013 14:06
  • Giovani, boa tarde.

    Resolvi com essa query.

    SELECT 
                COR.Colaborador_NumeroCPF as CPF,
                COR.Colaborador_ID,
                RH.NOME,COR.COLABORADOR_NOME
    FROM        tblCorColaborador COR INNER JOIN ControleGeralRH$ RH
                ON COR.Colaborador_NumeroCPF*100+COR.Colaborador_DigitoCPF = RH.CPF
    GROUP BY    COR.Colaborador_NumeroCPF,COR.Colaborador_ID,RH.NOME,COR.Colaborador_Nome,COR.Colaborador_PIS
    HAVING      COUNT(COR.Colaborador_NumeroCPF*100+COR.Colaborador_DigitoCPF) = 1
    

    Obrigado a todos !

    • Marcado como Resposta Felipe Torralvo quarta-feira, 18 de dezembro de 2013 20:56
    quarta-feira, 18 de dezembro de 2013 20:56