none
Gerar updates com linhas Individuais RRS feed

  • Pergunta

  • Bom dia pessoal.

    Estou com uma consulta que ensina da mesma quero gerar um update, preciso gerar linha por linha de update para não gerar duplicidade de alteração da mesma unidade do produto.

    Estou querendo ensina desta consulta SELEC gerar uma linha de update separada para cada coluna de IDPRD tratando a coluna marcada.

    SELECT C.CODCOLIGADA, C.IDPRD, C.CODIGOPRD, C.DESCRICAO, C.CODUND, C.CODUNDCOMPRA, C.CODUNDCONTROLE, C.CODUNDVENDA
    FROM
    (SELECT DISTINCT
    B.CODCOLIGADA, B.IDPRD, B.CODIGOPRD, B.DESCRICAO, A.CODUND, B.CODUNDCOMPRA, B.CODUNDCONTROLE, B.CODUNDVENDA
    FROM 
    (select TITMMOV.CODUND, TITMMOV.IDPRD, TITMMOV.NSEQITMMOV, TMOV.CODCOLIGADA, TMOV.IDMOV, TMOV.CODTMV, TMOV.STATUS, TMOV.DATAEMISSAO from TITMMOV INNER JOIN TMOV ON TMOV.IDMOV = TITMMOV.IDMOV AND TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA WHERE TMOV.CODCOLIGADA IN (1,4)) A, 
    (select TPRODUTO.CODIGOPRD, TPRODUTO.DESCRICAO, TPRODUTO.IDPRD, TPRODUTODEF.CODUNDCOMPRA,TPRODUTODEF.CODUNDCONTROLE,TPRODUTODEF.CODUNDVENDA, TPRODUTODEF.CODCOLIGADA from TPRODUTODEF INNER JOIN TPRODUTO ON TPRODUTO.IDPRD = TPRODUTODEF.IDPRD WHERE CODCOLIGADA IN (1,4)) B
    WHERE
    A.CODUND <> B.CODUNDCOMPRA
    AND A.IDPRD = B.IDPRD
    AND A.CODCOLIGADA = B.CODCOLIGADA
    AND YEAR(A.DATAEMISSAO) IN ('2017', '2018')
    AND A.CODTMV IN ('1.1.02', '1.1.03', '1.1.06')
    AND A.STATUS = 'F'
    ) C
    ORDER BY 4
    
    


    CharlesTI.

    quinta-feira, 5 de julho de 2018 11:21

Respostas

  • Não sei se é possível otimizar a sua query. Considerando a utilização dela da forma como está, experimente o formato do exemplo abaixo:

    with CTE_Origem as
    (
        -- sua query sem o Order By
    )
    
    update t
    set t.CODUND = o.CODUND
    from TITMMOV as t
    inner join CTE_Origem as o
        on o.IDPRD = t.IDPRD

    Espero que ajude


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

    • Marcado como Resposta CHARLES.PTU quinta-feira, 5 de julho de 2018 17:20
    quinta-feira, 5 de julho de 2018 14:32

Todas as Respostas