none
Capturar valores de uma tabela e inseri-los em outra RRS feed

  • Pergunta

  • Oi, tudo certo?

    Possuo uma tabela temporária que a preencho com resultado de uma determinada consulta. Agora preciso percorrer os dados dessa tabela temporária, linha a linha, e pegar determinados campos e inseri-los em outra tabela, para assim concluir o processo. Como posso o fazer?

    CREATE TABLE #PontosVPAcimaCem (
    qtd_cupons INT
    ,apuracao_ptsvp NUMERIC(14, 2)
    ,apuracao_mesfch INT
    ,apuracao_anofch INT
    ,apuracao_id_client INT
    ,clients_username NVARCHAR(150)
    )

    INSERT INTO #PontosVPAcimaCem (
    qtd_cupons
    ,apuracao_ptsvp
    ,apuracao_mesfch
    ,apuracao_anofch
    ,apuracao_id_client
    ,clients_username
    )
    SELECT CAST(a.ptsvp / 100 AS INT) --'ptsvp_divido_pontos'
    ,a.ptsvp --'ptsvp_apuracao'
    ,a.mesfch --'mesfch_apuracao'
    ,a.anofch --'anofch_apuracao'
    ,a.id_client --'id_client_apuracao'
    ,c.username --'username_clients'
    FROM t_clients c WITH (NOLOCK)
    INNER JOIN gr_apuracao a WITH (NOLOCK) ON c.id = a.id_client
    WHERE a.mesfch = @apuracao_mes
    AND a.anofch = @apuracao_ano
    AND a.ptsvp >= @apuracao_pontosvp

    SELECT qtd_cupons
    ,apuracao_ptsvp
    ,apuracao_mesfch
    ,apuracao_anofch
    ,apuracao_id_client
    ,clients_username
    FROM #PontosVPAcimaCem WITH (NOLOCK)
    ORDER BY qtd_cupons DESC
    END

    segunda-feira, 19 de dezembro de 2016 18:13

Respostas

Todas as Respostas

  • Boa tarde,

    Felipe, se você só precisa inserir os valores acredito que você possa utilizar um Insert / Select assim como é utilizado no seu script para inserir os dados na tabela temporária.

    obs: dependendo do caso a tabela temporária não é necessária

    Espero que ajude


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

    segunda-feira, 19 de dezembro de 2016 18:22
  • Até serviria, só que há um campo de código, que não é IDENTITY (tabela já veio assim), e sim um NVARCHAR, uma espécie de código de cupom, que preciso gerar um novo para cada registro.
    segunda-feira, 19 de dezembro de 2016 18:52
  • Você pode passar mais detalhes sobre esse código que você precisa gerar?

    Como esse código é composto?


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

    segunda-feira, 19 de dezembro de 2016 19:05
  • A opção do  gapimex e muito boa

    seria algo do tipo

    INSERT INTO Tabela
    SELECT  Campos que vc quer
    FROM    #PontosVPAcimaCem WITH ( NOLOCK )

    tem outra opção mas o custo (performace)  e maior em relação a primeira

    se não for esse seu empeçilho estude sobre Cursors que em resumo passa de linha a linha na sua query

    ou seja quando maior o resultado ,mais lento fica.



    Wesley Neves

    segunda-feira, 19 de dezembro de 2016 19:10
  • Gapimex

    Acredito que será um sequencial númerico, porém é um campo NVARCHAR na tabela, então acredito que terei que gerar o código na mão, pensei em ver o último código gerado, acrescentar 1, para gerar o novo.


    • Editado Felipe Negro segunda-feira, 19 de dezembro de 2016 19:42
    segunda-feira, 19 de dezembro de 2016 19:42
  • Wesley Neves

    Essa solução não será viável, pois necessito gerar um código de cupom, é um campo NVARCHAR da tabela que, acredito eu, terei que gerar na mão, pegar o último, somar 1, para gerar o novo. Por isso preciso percorrer linha a linha para gerar o código.

    segunda-feira, 19 de dezembro de 2016 19:45
  • Acho que você teria que postar informações detalhadas sobre como esse código deve ser gerado para vermos se é possível gera-lo na query, ou utilizando cursor ou etc


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

    segunda-feira, 19 de dezembro de 2016 20:06
  • Eu ainda não tenho informações detalhadas de como será o código, mas imagino que será uma sequencia de números 1001, 1002, 1003, etc.

    Aí precisarei percorrer linha a linha da tabela temporária, e para cada linha gerar um código de cupom, e inseri-la na tabela de cupom.

    terça-feira, 20 de dezembro de 2016 10:34
  • Duvidas ?

    1) qual tabela tem os dados que vc vai transferir para a outra ??

    posta uns exemplo de uns 5 dados que serão migrados.

    2) qual tabela que receberá os novos dados .

    estamos no aguardo


    Wesley Neves

    terça-feira, 20 de dezembro de 2016 11:01
  • Felipe, dependendo do caso pode ser possível utilizar uma função de classificação para obter uma sequencia numérica na query:

    https://msdn.microsoft.com/pt-br/library/ms189798.aspx

    Espero que seja útil


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

    terça-feira, 20 de dezembro de 2016 11:50
  • Felipe,

    A observação do Gapimex tem sentido ainda mais fazendo uso da função Row_Number(), mas também poderia ser interessante dependendo da implementação fazer uso do objeto Sequence ou até mesmo da opção Identity().


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 20 de dezembro de 2016 14:52
  • Consegui resolver meu problema utilizando cursor, assim consigo manipular linha a linha.

    quinta-feira, 22 de dezembro de 2016 10:38