none
Cross Join no Crystal Reports RRS feed

  • Pergunta

  • Galera, boa tarde.

    Estou desenvolvendo um relatório de Vendas, porém há algo estranho no código e não estou encontrando a solução.

    Preciso que esse relatório me traga todas as vendas realizadas para com um cliente.

    Nesse relatório, preciso trazer todos os itens vendidos a certos clientes. Para isso, utilizo tabela cruzada, com base na informacao :                     

     

     

                                                                                                                                               Cliente1

                                                                                                                                     Qtd            Valor total

                                                                                                             Item1                  4                R$ 200,00

                                                                                                             Item2                  3                R$ 250,00

                                                                                                             Item3                  5                R$ 550,50

     

    Se caso eu tiver 10 itens no meu cadastro, preciso trazer os 10, mesmo se nao foi vendido para esse cliente. Mas se caso eu colocar um parametro de data '01-08-2011' até '20-08-2011' , me traz 3 itens, que são os itens que foram realmente vendidos para esse cliente. Preciso trazer TODOS os itens, e nesse caso quando o item nao foi vendido para esse cliente, me traga o valor 0 (zero).

    Como faço isso?

    Segue meu comando:

    SELECT DISTINCT T0.ItemCode, T0.ItemName, (T1.MatGrp  + ' - ' +  T1.Descrip) 'Descricao',
           T3.CardName 'Cliente', ISNULL(SUM(T2.Quantity), 0)  'Quantidade Vendida',
        ISNULL(SUM(T2.LineTotal), 0) 'Valor da Venda' ,
        ISNULL(SUM(T2.LineTotal) / SUM(T2.Quantity), 0) 'Média' ,
        CONVERT(date,T3.DocDate) as 'Data de Lançamento',
        CONVERT(date,T3.DocDueDate) as 'Data de Vencimento',
        CONVERT(date,T3.TaxDate) as 'Data do Documento'
        FROM OITM T0
        INNER JOIN OMGP T1 ON T0.MatGrp = T1.AbsEntry
        LEFT JOIN INV1 T2 ON T0.ItemCode = T2.ItemCode
        LEFT JOIN OINV T3 ON T2.DocEntry = T3.DocEntry

    GROUP BY T3.DocNum, T0.ItemCode,
       T0.ItemName, T1.MatGrp ,
       T2.LineTotal, T2.Quantity,
       T3.CardName,
       T3.DocDate,
       T3.DocDueDate,
       T3.TaxDate, T1.Descrip
      
       ORDER BY 3

     

     

    Acho que estou errando nos joins. Me indicaram utilizao o Cross Join, mas não funcionou...

     

    Fico no aguardo e boa tarde a todos.


    quarta-feira, 24 de agosto de 2011 20:06