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.