CREATE OR REPLACE FORCE VIEW V_CATALOG ("NRSEQ", "CDCATEGORIA", "CDSUBCATEGORIA", "CDFILCOT", "NRCOLEPRECO", "CDREGIAO", "CDFORNECED", "CDPRODUTO", "CDMARCA", "VRPRECUNIITM", "DSTAMANHO", "CDCOMPRADOR") AS
SELECT CDPRODUTO||CDMARCA||REPLACE(REPLACE(VRPRECUNIITM, ',',''), '.', '')||CDFORNECED AS NRSEQ, CDCATEGORIA, 
       CDSUBCATEGORIA, CDFILCOT, NRCOLEPRECO, CDREGIAO, CDFORNECED, CDPRODUTO, CDMARCA, VRPRECUNIITM, DSTAMANHO, CDCOMPRADOR 
  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,
               COLETAPR.CDOPERADOR AS CDCOMPRADOR
          FROM PRODSUPPLY, ITEMCOLE, PRODUTO, COLETAPR
         WHERE PRODSUPPLY.CDFORNECED = ITEMCOLE.CDFORNECED
           AND PRODSUPPLY.NRCOLEPRECO = ITEMCOLE.NRCOLEPRECO
           AND PRODSUPPLY.CDPRODUTO = ITEMCOLE.CDPRODUTO
           AND PRODSUPPLY.CDPRODUTO = PRODUTO.CDPRODUTO 
           AND PRODSUPPLY.CDREGIAO  = ITEMCOLE.CDREGIAO
           AND PRODSUPPLY.CDMARCA   = ITEMCOLE.CDMARCA
           AND ITEMCOLE.VRPRECUNIITM > 0
           AND PRODSUPPLY.IDATIVO = 'S'
           AND ITEMCOLE.CDFILIAL = COLETAPR.CDFILIAL
           AND ITEMCOLE.NRCOLEPRECO = COLETAPR.NRCOLEPRECO
         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, COLETAPR.CDOPERADOR
        ORDER BY 5,7,6,10)
/