【发布时间】:2012-09-26 09:35:33
【问题描述】:
我必须构建一个自定义报告,其中包含每个订单的订单行以及报告上的客户姓名、地址和用户名。
当我进行如下简单查询时:
SELECT FilteredSalesOrder.*, FilteredAccount.*
FROM FilteredSalesOrder INNER JOIN FilteredAccount
ON FilteredSalesOrder.customerid = FilteredAccount.accountid
我检索数据,但只检索一行。当有更多时,预览不显示任何内容。 这不是什么大问题,因为我一次只需要 1 个订单。
所以对于我的 OrderReport,我需要每个订单的所有 OrderLine。该报告是按订单打印的,而不是同时为多个订单打印的。 它看起来像这样:
我刚刚在订单报告中加入了 5 个需要数据的表。
SELECT FilteredSalesOrder.*, FilteredAccount.*, FilteredSalesOrderDetail.*, FilteredSystemUser.*, FilteredProduct.*
FROM ((((FilteredSalesOrder INNER JOIN FilteredAccount
ON FilteredSalesOrder.customerid = FilteredAccount.accountid) INNER JOIN FilteredSalesOrderDetail
ON FilteredSalesOrderDetail.salesorderid = FilteredSalesOrder.salesorderid) INNER JOIN FilteredProduct
ON FilteredProduct.productid = FilteredSalesOrderDetail.productid) INNER JOIN FilteredSystemUser
ON FilteredSystemUser.systemuserid = FilteredSalesOrder.ownerid)
总结一下:
- 我的 SQL 查询是否正确?
- 当我上传一个简单的报告时,它给了我错误 rsInvalidDataSourceReference。我知道这个问题意味着什么,但我需要做些什么来解决它。
- 如何确保在报告中,订单行表根据需要不断增长以包含所有订单行?
【问题讨论】:
-
你把3个问题合二为一,让人很难有效回答。最好分别询问每个人,并为每个问题提供适当的详细信息。作为一般建议,暂时忘记报告并专注于编写返回正确数据的查询。如果没有有关表结构、它们与数据之间的关系(外键)的信息,没有人可以告诉您您的查询是否正确。并且您应该避免在查询中使用
SELECT *,因为如果(何时)更改表中的列会导致问题。
标签: sql sql-server-2008 dynamics-crm-2011 reporting-services