الإجابة Update tabelas diferentes

  • quinta-feira, 16 de fevereiro de 2012 12:56
     
     

    Prezados bom dia, veja se possivel isso.

    SQL

    SELECT R.CODCCUSTO    as  obra,
    TI.IDMOV                        as  id,
    T.VALORBRUTO              as  valor 1 ,
    TI.VALORTOTALITEM       as  valor 2,
    R.VALOR                         as  valor2
     FROM TMOV  AS T
    INNER JOIN TITMMOV           AS TI ON TI.CODCOLIGADA = T.CODCOLIGADA AND TI.IDMOV = T.IDMOV
    INNER JOIN TITMMOVRATCCU     AS R  ON R.CODCOLIGADA  = TI.CODCOLIGADA AND R.IDMOV  = TI.IDMOV
    AND R.NSEQITMMOV =  TI.NSEQITMMOV
    WHERE R.CODCCUSTO = '30.01.001.005' AND R.VALOR = '319.6700'
    ORDER BY TI.IDMOV

    Resultado

    Obra                       ID                        valor 1                   valor 2       valor 3

    30.01.001.005         35129                 1000.0000              NULL         319.6700
    30.01.001.005         35606                 417.0400               417.0400    319.6700
    30.01.001.005         36535                 718.0000               36.0000      319.6700
    30.01.001.005         36681                 180.0000               NULL          319.6700

    seguinte situacao aonde quanto valor 1 e valor  2 for igual fazer update no valor 3 tb,

    resultado esperado

    Obra                       ID                        valor 1                   valor 2       valor 3

    30.01.001.005         35129                 1000.0000              NULL         319.6700
    30.01.001.005         35606                 417.0400               417.0400    417.0400

    30.01.001.005         36535                 718.0000               36.0000      319.6700
    30.01.001.005         36681                 180.0000               NULL          319.6700

    obrigado a todos

Todas as Respostas

  • quinta-feira, 16 de fevereiro de 2012 13:07
    Moderador
     
     Respondido


    Ronnie,





    Tente este codigo.





    UPDATE R



    SET



    R.VALOR = CASE



                      WHENT.VALORBRUTO=TI.VALORTOTALITEM



                                 THENT.VALORBRUTO



                      ELSE



                                 R.VALOR



                      END



    FROM TMOV  AS T



    INNER JOIN TITMMOV TI



          ON (TI.CODCOLIGADA=T.CODCOLIGADA



                ANDTI.IDMOV=T.IDMOV)



    INNER JOIN TITMMOVRATCCU R 



          ON (R.CODCOLIGADA  =TI.CODCOLIGADA



                ANDR.IDMOV  =TI.IDMOV



                ANDR.NSEQITMMOV=  TI.NSEQITMMOV)



    WHERE



          R.CODCCUSTO='30.01.001.005'



          ANDR.VALOR='319.6700'



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Ronnie Von quinta-feira, 16 de fevereiro de 2012 14:16
    •  
  • quinta-feira, 16 de fevereiro de 2012 14:01
     
     

    Ronnie

    Você quer atualiza os valores na tabela ou apenas retornar os valores com a condição menciona no seu select?


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

  • quinta-feira, 16 de fevereiro de 2012 14:16
     
     

    Fabrizzio Obrigado pela ajuda, conseguimos resolver.

    valeu marcelo pela força.