none
Comando SQL Server RRS feed

  • Pergunta

  • Bom dia 

    Estava precisando de um comando para o seguinte cenário:

    Tenho uma tabela chamada PRODUTO_FORNECEDOR, onde essa tabela contem as informações do fornecedor atrelado a cada produto.

    Tenho o campo de fornecedor FORCOD, e tenho o campo chamado PRFNIVEL que esse campo armazena a informação se o fornecedor é principal P ou secundário S.

    Então tenho isso na tabela

    


    então era um update onde coloque todos os fornecedores o FORCOD 0002 como Principal e depois colocar o que era principal como Secundário. Mas somente para o Forcod 0002.



    quarta-feira, 17 de maio de 2017 13:36

Respostas

  • Experimente dessa forma para ver se é obtido o resultado esperado:

    with CTE_PROCOD as
    (
        select 
            PROCOD 
        from PRODUTO_FORNECEDOR
        where 
            FORCOD = '0002' AND
            PRFNIVEL = 'S'
    )
    
    update p
    set p.PRFNIVEL = case when p.FORCOD = '0002' then 'P' else 'S' end
    from PRODUTO_FORNECEDOR as p
    inner join CTE_PROCOD as c
        on c.PROCOD = p.PROCOD
    

    Espero que ajude


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

    • Marcado como Resposta Dyego Rodrigues quarta-feira, 17 de maio de 2017 15:33
    quarta-feira, 17 de maio de 2017 14:24

Todas as Respostas

  • No caso você só precisa deletar o FORCOD 0001 e mudar o FORCOD 0002 para principal?

    DELETE FROM PRODUTO_FORNECEDOR WHERE FORCOD = '0001'
    UPDATE PRODUTO_FORNECEDOR SET PRFNIVEL = 'P' WHERE FORCOD = '0002'

    Tenta desse jeito.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quarta-feira, 17 de maio de 2017 13:39
  • Ola

    Não, na verdade é um update eu acho, para que eu faça em todos os registros.

    Colocar o FORCOD 0002 como Principal em todos os registros dessa tabela que o FORCOD seja secundario

    e COLOCAR O QUE ERA PRINCIPAL COMO SECUNDARIO

     


    quarta-feira, 17 de maio de 2017 13:44
  • Bom dia,

    Não sei se entendi corretamente mas experimente dessa forma:

    update PRODUTO_FORNECEDOR
    set PRFNIVEL = 'S'
    where PRFNIVEL = 'P'
    
    update PRODUTO_FORNECEDOR
    set PRFNIVEL = 'P'
    where FORCOD = '0002'

    Espero que ajude


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

    quarta-feira, 17 de maio de 2017 14:01
  • Não pode ter dois fornecedores como principal

    tem que colocar o 0002 como principal, em todos que ele é secundário, e em todos que ele era secundário, deixar o principal como secundário

    quarta-feira, 17 de maio de 2017 14:06
  • Experimente dessa forma para ver se é obtido o resultado esperado:

    with CTE_PROCOD as
    (
        select 
            PROCOD 
        from PRODUTO_FORNECEDOR
        where 
            FORCOD = '0002' AND
            PRFNIVEL = 'S'
    )
    
    update p
    set p.PRFNIVEL = case when p.FORCOD = '0002' then 'P' else 'S' end
    from PRODUTO_FORNECEDOR as p
    inner join CTE_PROCOD as c
        on c.PROCOD = p.PROCOD
    

    Espero que ajude


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

    • Marcado como Resposta Dyego Rodrigues quarta-feira, 17 de maio de 2017 15:33
    quarta-feira, 17 de maio de 2017 14:24
  • Funcionou perfeito.

    obrigado

    quarta-feira, 17 de maio de 2017 15:34