Sql server 2005 Crystal Reports SQL Server多表和外部联接
我想做一份报告,展示顾客购买的产品。 我有Sql server 2005 Crystal Reports SQL Server多表和外部联接,sql-server-2005,crystal-reports,join,Sql Server 2005,Crystal Reports,Join,我想做一份报告,展示顾客购买的产品。 我有Products,TransDetails,TransHeaders,客户表格,我必须挑选所有产品,并且对于每个产品,我必须显示每个客户的销售额如果客户尚未购买任何特定产品,则该产品仍应显示在销售为0的报告中。用户应该能够为特定客户或客户组运行此报告。 我现在面临的问题是,如果我在sql查询中包含customers表,那么它只显示客户购买的产品,而不显示客户尚未购买的产品 SELECT Products.SalesCategory, Products.
Products
,TransDetails
,TransHeaders
,客户
表格,我必须挑选所有产品,并且对于每个产品,我必须显示每个客户的销售额如果客户尚未购买任何特定产品,则该产品仍应显示在销售为0的报告中。用户应该能够为特定客户或客户组运行此报告。
我现在面临的问题是,如果我在sql查询中包含customers表,那么它只显示客户购买的产品,而不显示客户尚未购买的产品
SELECT Products.SalesCategory, Products.ProductCode, Products.ProductTitle, Customers.CustomerCode, Transdetails.quantity
From Products left outer join Transdetails on Products.ProductID= Transdetails.ProductID
Left Outer Join Customers on Customers.CustomerId= Transdetails.CustomerID
Where SalesCategory like 'XYZ' and Products.Status like 'A'
and customers.customercode like 'BEST'
order by SalesCategory, ProductCode, ProductTitle
这似乎是因为您的
Where
子句包含了对customers.customercode的选择,如“BEST”
——这实质上将客户的外部连接转化为内部连接
要选择SalesCategory为“XYZ”且状态为“A”的所有产品,以及customercode为“BEST”的客户销售,请尝试以下操作:
SELECT Products.SalesCategory, Products.ProductCode, Products.ProductTitle, Transcust.CustomerCode, Transcust.quantity
From Products left outer join
(SELECT Customers.CustomerCode, Transdetails.ProductID, Transdetails.quantity
FROM Transdetails
Join Customers on Customers.CustomerId= Transdetails.CustomerID
WHERE customers.customercode like 'BEST') Transcust
on Products.ProductID= Transcust.ProductID
Where SalesCategory like 'XYZ' and Products.Status like 'A'
order by SalesCategory, ProductCode, ProductTitle
通过删除product和transaction details表之间的链接,我已经解决了这个问题,因此我选择了所有产品并选择了所有客户的交易。@shahsali:对于更多的表,应该可以采用类似的方法-为什么不编辑您的问题以包括完整的查询,最好包括参数?另外,您可以包括您正在使用的Crystal的哪个版本吗?感谢mark,我已经找到了解决方案,删除了产品和交易表之间的链接。虽然报告的时间比正常情况下长。。谢谢你的帮助。