Boa tarde Pessoal,
Estou com uma dificuldade para realizar um insert em uma tabela ANUAL ( tabela tem colunas, nome_produto, jan, fev, mar, abr, mai, ..., dez ).
O cursos tem um select que guarda o nome_produto, mês. Com isso tenho uma coluna mês.
Fiz um FOR declarando e incrementando uma variável até 12, onde seria o ultimo mês do ano. Porém como meu select traz o mês como coluna, eu não consigo fazer o FOR utilizando apenas um insert.
alguém poderia me ajudar com alguma idéia?
abraços.
Daniel.
Insert a partir de um Cursor
-
- Rank: Programador Sênior
- Mensagens: 67
- Registrado em: Dom, 15 Jan 2012 9:34 pm
- Contato:
Daniel Barros
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Pelo que entendi(tenho minhas dúvidas) você utilizaria 2 FOR aninhados, o primeiro de produtos e o interno de meses com o UNICO INSERT dentro deste.
Mas confesso que não entendi perfeitamente o que desejas.
Se puder mostrar a estrutura do seu código destacando o problema...
Mas confesso que não entendi perfeitamente o que desejas.
Se puder mostrar a estrutura do seu código destacando o problema...
-
- Rank: Programador Sênior
- Mensagens: 67
- Registrado em: Dom, 15 Jan 2012 9:34 pm
- Contato:
Daniel Barros
Seguinte,
Eu não tenho como mostrar a estrutura aqui, porque estou em rede separada, e como se trata de cliente não tenho acesso a base pelo meu note.
Mas assim, vou tentar explicar melhor:
Tenho uma tabela chamada t_margem com as seguintes colunas: COD_PROD, DESC_PRODUTO, JAN, FEV, MAR, ABR, MAI, .... , DEZ.
Preciso alimentar as margens de cada produto (que é uma formula que já fiz) de maneira anual, ou seja, um insert para o produto X (de janeiro a dezembro), um insert para o produto Y (de janeiro a dezembro) e assim por diante.
O select que gera essa margem é composta das colunas COD_PROD, DESC_PROD, mês e MARGEM. Com isso eu tenho uma coluna que traz todos os meses de cada produto nela.
A minha dúvida e, quero fazer uma procedure que insira cada produto com suas margens de acordo com o mês. Eu criei um cursor com o select, mas como tenho todos os meses em apenas uma coluna, não consigo inserir na tabela t_margem (COD_PROD, DESC_PRODUTO, JAN, FEV, MAR....,DEZ).
abraços.
Daniel.
Eu não tenho como mostrar a estrutura aqui, porque estou em rede separada, e como se trata de cliente não tenho acesso a base pelo meu note.
Mas assim, vou tentar explicar melhor:
Tenho uma tabela chamada t_margem com as seguintes colunas: COD_PROD, DESC_PRODUTO, JAN, FEV, MAR, ABR, MAI, .... , DEZ.
Preciso alimentar as margens de cada produto (que é uma formula que já fiz) de maneira anual, ou seja, um insert para o produto X (de janeiro a dezembro), um insert para o produto Y (de janeiro a dezembro) e assim por diante.
O select que gera essa margem é composta das colunas COD_PROD, DESC_PROD, mês e MARGEM. Com isso eu tenho uma coluna que traz todos os meses de cada produto nela.
A minha dúvida e, quero fazer uma procedure que insira cada produto com suas margens de acordo com o mês. Eu criei um cursor com o select, mas como tenho todos os meses em apenas uma coluna, não consigo inserir na tabela t_margem (COD_PROD, DESC_PRODUTO, JAN, FEV, MAR....,DEZ).
abraços.
Daniel.
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Existem algumas formas de conseguir transformar colunas em linhas e vice-versa.
Se você está utilizando o 11g, dá um olha em PIVOT.
http://www.oracle.com/technetwork/artic ... 97235.html
Porém se usas o 10g, olha uma alternativa:
http://asktom.oracle.com/pls/asktom/f?p ... 9593546543
Se 9i, olha através deste link :
http://stackoverflow.com/questions/6361 ... l-pivoting
Se você está utilizando o 11g, dá um olha em PIVOT.
http://www.oracle.com/technetwork/artic ... 97235.html
Porém se usas o 10g, olha uma alternativa:
http://asktom.oracle.com/pls/asktom/f?p ... 9593546543
Se 9i, olha através deste link :
http://stackoverflow.com/questions/6361 ... l-pivoting
-
- Rank: Programador Sênior
- Mensagens: 67
- Registrado em: Dom, 15 Jan 2012 9:34 pm
- Contato:
Daniel Barros
Então Daniel, valeu pelos links interessantes que passou.
Utilizo 10g e já tinha tentado realizar o select com o decode, para formar a coluna dos meses. Só que o meu select traz os itens do pedido, e para realizar o calculo de margem eu preciso somar cada item, impostos e etc. Com isso não posso fazer um, por exemplo: sum(decode(mês,01,....) pois ele vai calcular o percentual de margem errado. Eu tenho que somar campo a campo.
Esse é o meu maior problema.
abraços.
Daniel.
Utilizo 10g e já tinha tentado realizar o select com o decode, para formar a coluna dos meses. Só que o meu select traz os itens do pedido, e para realizar o calculo de margem eu preciso somar cada item, impostos e etc. Com isso não posso fazer um, por exemplo: sum(decode(mês,01,....) pois ele vai calcular o percentual de margem errado. Eu tenho que somar campo a campo.
Esse é o meu maior problema.
abraços.
Daniel.
-
- Rank: Programador Sênior
- Mensagens: 67
- Registrado em: Dom, 15 Jan 2012 9:34 pm
- Contato:
Daniel Barros
Daniel,
Então cara, consegui a partir do ultimo link que você me passou. Na verdade é uma solução bem simples, que eu já tinha feito em alguma situações, mas não implementei nessa.
Muito obrigado pelo tempo dedicado.
abraços.
Daniel Barros
Então cara, consegui a partir do ultimo link que você me passou. Na verdade é uma solução bem simples, que eu já tinha feito em alguma situações, mas não implementei nessa.
Muito obrigado pelo tempo dedicado.
abraços.
Daniel Barros
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 30 visitantes