Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/12/2007, 07:17
MarioHeredia
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 6 meses
Puntos: 3
Re: Contar los diferentes itens

Bueno Joven MARLIT....

lo primero que hice fue ordenar un poco la consulta, la prolijidad en el armada de la consulta es muy importante.

me di cuenta que haces un join entre numero de documento y otro por codigo de producto, supongo que la categoria a la que te refieres la cuales no haces mencion en ningun lado, es COD_GRUPO_TERAP.

bien aqui el cogigo.

Código:
SELECT FECHA,
       NUM_DOCUMENTO,
       COD_CLIENTE,
       COD_GRUPO_TERAP,
       COD_PRODUCTO,
       SUM(COD_PRODUCTO) OVER(PARTITION BY COD_GRUPO_TERAP) PRODUCTO_POR_CATEGORIA,
       DES_PRODUCTO
  FROM (SELECT TRIM(COD_GRUPO_TERAP) COD_GRUPO_TERAP,
               DES_PRODUCTO,
               COUNT(TRIM(COD_PRODUCTO)) CANTIDAD
          FROM CMR.MAE_PRODUCTO_COM
         WHERE TRIM(COD_GRUPO_TERAP) IS NOT NULL
         GROUP BY TRIM(A.COD_GRUPO_TERAP),
                  A.DES_PRODUCTO
       ) A, 
       (SELECT TRIM(NUM_DOCUMENTO) NUM_DOCUMENTO,
               TRIM(COD_PRODUCTO) COD_PRODUCTO,
               COUNT(*) CANTIDAD
          FROM BTLCADENA.D_DOCUMENTOS 
         GROUP BY TRIM(NUM_DOCUMENTO),
                  TRIM(COD_PRODUCTO)
       )B,
       (SELECT TO_NUMBER(COD_CLIENTE) COD_CLIENTE,
               TRIM(NUM_DOCUMENTO) NUM_DOCUMENTO,
               FCH_FACTURA
          FROM BTLCADENA.C_DOCUMENTOS
         WHERE FCH_FACTURA BETWEEN ('11-DIC-06') 
                               AND ('11-JUN-07')
       )C
 WHERE A.COD_PRODUCTO = B.COD_PRODUCTO 
   AND C.COD_CLIENTE = 6
   AND B.NUM_DOCUMENTO = C.NUM_DOCUMENTO
la solucion a tu problema esta en la linea...

Código:
SUM(COD_PRODUCTO) OVER(PARTITION BY COD_GRUPO_TERAP)
esto suma la cantidad de productos por categoria y aparece como una columna mas.

Puede que algun cambio no funcione, corrigelo y dime luego como te fue.

Sldo Atte, Mario.