Procedure para Contabilizar a quantidade de produtos vendidos

Firebird

11/05/2011

Galera eu uso firebird 2.1 e estou com uma duvida, eu criei um procedure para somar a quantidade de produtos vendidas por um vendedor em um determinado periodo, só que eu queria que saisse de todos os vendedores, e em colunas. Ex:

VENDEDOR   |  PROD1 | PROD2 | PROD3 | PROD4 | PROD5 etc..
Pedro             2              3         1          20        22
Francisco        20          11         20         0          23
João              33            9          3            2        3

Aqui esta a procedure que eu ja tenho, só que os produtos estão em linhas e não estão todos os vendedores.

CREATE PROCEDURE SP_CX_VEND (
    i_vend_id integer,
    i_data_ini date,
    i_data_fim date)
returns (
    prod_id integer,
    abreviacao char(5),
    vend_id integer,
    tcig decimal(15,2),
    tqtde decimal(15,2))
as
BEGIN
  FOR
    SELECT P.PROD_ID,
           P.ABREVIACAO,
           V.VEND_ID,
           (SELECT SUM(CX.VEN_QTDE)
               FROM CX_ITENS CX, CX_VENDEDOR V
               WHERE V.CXVEN_ID = CX.CXVEN_ID
               AND V.VEND_ID = :I_VEND_ID
               AND CX.DATA BETWEEN :I_DATA_INI AND :I_DATA_FIM
               AND V.SITUACAO = 'FECHADO'
               AND CX.PROD_ID IN (1,2,3,4,5,6,7,46,47,52,58,63,71)) AS TCIG,
           SUM(COALESCE(CX.VEN_QTDE,0)) AS TQTDE
      FROM CX_ITENS CX
     INNER JOIN CX_VENDEDOR V ON (V.CXVEN_ID = CX.CXVEN_ID
                                  AND V.VEND_ID = :I_VEND_ID
                                  AND V.DT_CAIXA BETWEEN :I_DATA_INI AND

:I_DATA_FIM
                                  AND V.SITUACAO = 'FECHADO'
                                  )
     RIGHT JOIN PRODUTOS P ON (CX.PROD_ID = P.PROD_ID)
     GROUP BY P.PROD_ID, P.ABREVIACAO, V.VEND_ID, P.ATIVO
    HAVING P.ATIVO = 'A'
      INTO :PROD_ID,
           :ABREVIACAO,
           :VEND_ID,
           :TCIG,
           :TQTDE
  DO
  BEGIN
    SUSPEND;
  END
END
Sidney Abreu

Sidney Abreu

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

11/05/2011

pelo que eu entendi o numero de colunas de retorno  pode variar pra você. via stored procedure não vai funcionar pois elas devem ser fixas.

você precisa preparar a visualização dos dados retornados pela SP no seu programa ou por outro meio.


GOSTEI 0
POSTAR