CREATE OR REPLACE FORCE VIEW V_CATALOG ("NRSEQ", "CDCATEGORIA", "CDSUBCATEGORIA", "CDFILCOT", "NRCOLEPRECO", "CDREGIAO", "CDFORNECED", "CDPRODUTO", "CDMARCA", "VRPRECUNIITM", "DSTAMANHO") AS
SELECT CDPRODUTO||CDMARCA||REPLACE(REPLACE(VRPRECUNIITM, ',',''), '.', '')||CDFORNECED AS NRSEQ, CDCATEGORIA, CDSUBCATEGORIA, CDFILCOT, NRCOLEPRECO, CDREGIAO, CDFORNECED, CDPRODUTO, CDMARCA, VRPRECUNIITM, DSTAMANHO
  FROM (SELECT PRODSUPPLY.CDCATEGORIA, 
               PRODSUPPLY.CDSUBCATEGORIA, 
               ITEMCOLE.CDFILIAL AS CDFILCOT,
               PRODSUPPLY.NRCOLEPRECO,
               ITEMCOLE.CDREGIAO,
               PRODSUPPLY.CDFORNECED, 
               DECODE(NVL(PRODUTO.IDTAMANHO, 'UNICO'), 'UNICO', PRODSUPPLY.CDPRODUTO, PRODUTO.CDPRODESTO) CDPRODUTO,
               ITEMCOLE.CDMARCA,
               ITEMCOLE.VRPRECUNIITM,
               LISTAGG(PRODUTO.IDTAMANHO, ';') WITHIN GROUP(ORDER BY PRODUTO.IDTAMANHO ) DSTAMANHO
          FROM PRODSUPPLY, ITEMCOLE, PRODUTO
         WHERE PRODSUPPLY.CDFORNECED = ITEMCOLE.CDFORNECED
           AND PRODSUPPLY.NRCOLEPRECO = ITEMCOLE.NRCOLEPRECO
           AND PRODSUPPLY.CDPRODUTO = ITEMCOLE.CDPRODUTO
           AND PRODSUPPLY.CDPRODUTO = PRODUTO.CDPRODUTO 
           AND PRODSUPPLY.IDATIVO = 'S'
         GROUP BY PRODSUPPLY.CDCATEGORIA, PRODSUPPLY.CDSUBCATEGORIA, ITEMCOLE.CDFILIAL, PRODSUPPLY.NRCOLEPRECO, ITEMCOLE.CDREGIAO,
                  PRODSUPPLY.CDFORNECED, DECODE(NVL(PRODUTO.IDTAMANHO, 'UNICO'), 'UNICO', PRODSUPPLY.CDPRODUTO, PRODUTO.CDPRODESTO),
                  ITEMCOLE.CDMARCA, ITEMCOLE.VRPRECUNIITM
        ORDER BY 5,7,6,10)
/