Ola, alguém poderia me ajudar em um update em uma tabela de preço em Oracle?, implantamos o sistema a pouco e tenho tudo em excel, gostaria de fazer o seguinte , o update simples eu sei fazer, até com a condição where, so que agora nesta tabela complicou, a tabela é a seguinte:
CODTAB | CODPROD | VLRVENDA
1 | 100 | 2,51
1 | 101 | 1,51
1 | 110 | 2,61
1 | 145 | 2,50
2 | 134 | 1,88
2 | 187 | 1,30
2 | 2345 | 3,88
2 | 11 | 3,70
2 | 10 | 0,51
2 | 101 | 2,21
2 | 50100 | 1,51
Eu tenho em excel mais por exemplo eu gostaria de atualizar apenas uma parte da tabela 1, e uma parte da tabela 2, pois tem mais de 1500 itens, e eu quero fazer um update em torno de 400 itens nas listas 1 e 2, são preços diferenciados, EX.:
codigo tabela , codigo produto , preço de venda
1 , 101 , 1,51
1 , 110 , 2,68
2 , 101 , 1,29
fazer somente olhando o codigo de trodutos não da pois exite o mesmo codigo nas duas listas de preços ( 1 e 2 ) com preços diferentes, e preciso atualizar eles nas duas também com update com preços diferentes, e também não é linear o aumento de preço, existe redução também, eu fiz um arquivo txt com o codigo da tabela ( CODTAB), dodigo do produto ( CODPROD ), e o preço ( VLRVENDA ), como disse é uns 400 itens na maioria tem nas duas tabelas com preços diferentes.
Se alguém puder me dar uma ajuda agradeço muito, Abraço.
Update tabela Oracle
Do jeito que você está falando, só com "serviço de preso" mesmo que você vai conseguir.
Colocando todos os códigos de tabela E produto e o preço, já que não existe nenhuma lógica no aumento (ou diminuição) do preço...
Exemplo:
Os códigos dos produtos e preços da tabela 2 vão no primeiro decode e os códigos da tabela 1 vão no segundo decode, seguindo o par (produto, novo_preço)... Se não conhecer as funçoes decode, nlv2 e nullif, procure no google que vai ser fácil de você entender a lógica... Mas não sei como fugir do "serviço de preso"... ![Surprised :-o](./images/smilies/icon_surprised2.gif)
Colocando todos os códigos de tabela E produto e o preço, já que não existe nenhuma lógica no aumento (ou diminuição) do preço...
Exemplo:
UPDATE SUA_TABELA
SET VLRRENDA = NVL2(
NULLIF(CODTAB, 1),
DECODE(CODPROD, 101, 1.29, VLRVENDA ),
DECODE(CODPROD, 101, 1.51, 110, 2.68, VLRVENDA )
);
![Surprised :-o](./images/smilies/icon_surprised2.gif)
Pensando bem, outro jeito seria importar sua tabela do excel pra dentro do oracle ou usar external table pra ler a planilha e fazer um update ou merge mais simples, consultando a planilha...
O update é semelhante ao merge então nem vou postar...
MERGE INTO SUA_TABELA b
USING (
SELECT CODTAB, CODPROD, VLRVENDA
FROM SUA_PLANILHA) e
ON (b.CODTAB = e.CODTAB
AND b. CODPROD = e. CODPROD)
WHEN MATCHED THEN
UPDATE SET b.VLRVENDA = e.VLRVENDA;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante