Fórum Procedure para Contabilizar a quantidade de produtos vendidos #400907
11/05/2011
0
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
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
Curtir tópico
+ 0
Responder
Posts
25/05/2011
Emerson Nascimento
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.
você precisa preparar a visualização dos dados retornados pela SP no seu programa ou por outro meio.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)