Select Cross Tab

Firebird

02/06/2011

Boa noite galera, eu preciso fazer um relatório CrossTAB, mas para isso eu preciso de uma instrução SQL correta. Estou utilizando firebird2.1 e Delphi2010 e RaveReport ou QuickReport;

Bom, vou tentar explicar o relatorio.

O relatório se resume em listar os produtos da tabela produto e as quantidades vendidas dos respectivos produtos de cada vendedor na horizontal, e os vendedor os nomes dos vendedores na vertical.

Ex:

Minhas tabelas:


Meu select é esse:
 
select 
    cx_vendedor.cxven_id,
    cx_itens.cxven_id,
    cx_itens.ven_qtde,
    cx_itens.prod_id,
    cx_itens.vend_id,
    cx_vendedor.dt_caixa,
    cx_vendedor.ven_total,
    produtos.prod_id,
    produtos.abreviacao,
    vendedor.vend_nome
from cx_itens
   inner join cx_vendedor on (cx_itens.cxven_id = cx_vendedor.cxven_id)
   inner join vendedor on (cx_vendedor.vend_id = vendedor.vend_id)
   inner join produtos on (cx_itens.prod_id = produtos.prod_id)


Mas não dar certo. Alguem pode me ajudar;
Sidney Abreu

Sidney Abreu

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

02/06/2011

Todas as suas FK's são NOT NULL? Se não for, tente utilizar o OUTER JOIN, coloquei um exemplo abaixo.
SELECT
  cxv.cxven_id,
  cxi.cxven_id,
  cxi.ven_qtde,
  cxi.prod_id,
  cxi.vend_id,
  cxv.dt_caixa,
  cxv.ven_total,
  prod.prod_id,
  prod.abreviacao,
  vend.vend_nome
FROM
  CX_ITENS cxi
    INNER JOIN PRODUTOS prod ON (cxi.Prod_ID = prod.Prod_ID)
    LEFT OUTER JOIN CX_VENDEDOR cxv ON (cxi.cxven_ID = cxv.cxven_ID)
      LEFT OUTER JOIN VENDEDOR vend ON (cxv.Vend_ID = vend.Vend_ID)


Espero ter colaborado.
GOSTEI 0
POSTAR