Usuário com melhor resposta
Comando SQL Server

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.
- Editado Dyego Rodrigues quarta-feira, 17 de maio de 2017 13:38
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
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
-
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
- Editado Dyego Rodrigues quarta-feira, 17 de maio de 2017 13:57
-
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
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 17 de maio de 2017 17:35
-
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
- Editado Dyego Rodrigues quarta-feira, 17 de maio de 2017 14:08
-
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
-