Array
(
)

Consulta Avançada

Eliézio Mesquita
   - 27 set 2010

Boa tarde,

Caros colegas, estou com grande problema, preciso fazer uma migração de sistemas, onde vou sair do SQL Server para o Oracle.

Problemas:

Tenho uma tabela de produtos e outra de Código de Barras, tem produtos com vários tamanhos diferentes, Tipo, P,M e G, para cada tamanho tenho um código de Barras diferente, quanto faço a consulta o mesmo produto aparece 3 vezes uma.
Exemplo:

Desc_Produto              Valor                    Cod_Barras

Sandalia                       1,00                     78025
Sandalia                       2,00                     78026
Sandalia                       3,00                     78027

Solução:

Eu preciso fazer um select ou uma procedure que pegue os códigos de barras como se fosse colunas,
Exemplo do Retorno que preciso:

Desc_Produto              Valor                    Cod_Barras          Cod_Barras2           Cod_Barras3

Sandalia                       1,00                     78025                  78026                        78027

Ou seja, transforma linhas em colunas, porque o novo sistema me permite ter vários código de barras para o mesmo produto, mudo somente o tamanho do produto, assim não preciso ter 3 cadastro do mesmo produto, é tudo controlado por grade.

Se alguém tive uma solução eu agradeço.

Obrigado,

Eliézio Mesquita

Emerson
   - 27 set 2010

isso é correto? (visto que os valores são diferentes...)

Eliézio Mesquita
   - 27 set 2010

Ola Emerson, 
É correto sim, pois em uma unica referencia e para cada Tamanho eu posso associar 2 ou mais códigos de barra.
Imagine comigo: 

Referencia = 1020 - Camiseta Masc.   Tamanhos  = P/ M / G
Para cada *tamanho* eu posso cadastrar o meu código de barra interno e também associar o cod. do meu fornecedor. Ou seja, 2 códigos de barras para cada tamanho. 
No momento de retornar os dados o banco esta retornando 6 linhas. Uma para cada código de barra diferente. Eu preciso de saia apenas uma linha por tamanho e se caso encontre 2 códigos para o mesmo tamanho ele retorna em colunas.

Emerson
   - 29 set 2010

creio que isso só podera ser tratado na aplicação.

Eliézio Mesquita
   - 29 set 2010

Verdade, mas estamos ainda migrando os dados para a nova aplicação.
obrigado,

Eliézio Mesquita

Bruno Batista
   - 29 set 2010

Boa tarde,

tente da seguinte forma.

#Código

SELECT DISTINCT L.DESC_PRODUTO,
             DECODE(L.LINHA,1,L.COD_BARRA,' ') AS COD_BARRA1,
             DECODE(L.LINHA,2,L.COD_BARRA,' ') AS COD_BARRA2,
             DECODE(L.LINHA,3,L.COD_BARRA,' ') AS COD_BARRA3
  FROM (SELECT ROWNUM AS LINHA,
                          P.DESC_PRODUTO,
                          P.COD_BARRA
                FROM TABELA P) L
 ORDER BY L.DESC_PRODUTO


 
Citação:

Boa tarde,

Caros colegas, estou com grande problema, preciso fazer uma migração de sistemas, onde vou sair do SQL Server para o Oracle.

Problemas:

Tenho uma tabela de produtos e outra de Código de Barras, tem produtos com vários tamanhos diferentes, Tipo, P,M e G, para cada tamanho tenho um código de Barras diferente, quanto faço a consulta o mesmo produto aparece 3 vezes uma.
Exemplo:

Desc_Produto              Valor                    Cod_Barras

Sandalia                       1,00                     78025
Sandalia                       2,00                     78026
Sandalia                       3,00                     78027

Solução:

Eu preciso fazer um select ou uma procedure que pegue os códigos de barras como se fosse colunas,
Exemplo do Retorno que preciso:

Desc_Produto              Valor                    Cod_Barras          Cod_Barras2           Cod_Barras3

Sandalia                       1,00                     78025                  78026                        78027

Ou seja, transforma linhas em colunas, porque o novo sistema me permite ter vários código de barras para o mesmo produto, mudo somente o tamanho do produto, assim não preciso ter 3 cadastro do mesmo produto, é tudo controlado por grade.

Se alguém tive uma solução eu agradeço.

Obrigado,

Eliézio Mesquita

Eliézio Mesquita
   - 29 set 2010

Bruno

Vou verificar e aviso, obrigado.

Eliezio Mesquita