1

我有一个销售表和一个折扣表。

主要数据集是一个销售表,其中包含人均销售额。

每个人只关联一个项目,每个项目只有一个主管。

第二个数据集 - 折扣表包含每个项目的折扣条目

Sales Table

Supervisor  | Company   |Project    |Person |Sale
Adam        | CompanyA  |CompA-01   |Amy    |100
Adam        | CompanyA  |CompA-02   |Beth   |200
Adam        | CompanyA  |CompA-02   |Cary   |200
Jenny       | CompanyA  |CompA-05   |Dawn   |300
Jenny       | CompanyA  |CompA-05   |Emma   |400



Discounts table

Company | Project   |Month  |Amount
CompanyA| CompA-02  |Jan    |500
CompanyA| CompA-02  |Feb    |500
CompanyA| CompA-05  |Jan    |1000

我想显示一个报表,其中折扣字段的计算方式如下

Supervisor  | Company   |Project    |Person |Sales  |Discounts 
Adam                            
          CompanyA                           500       1000 <---HELP CALCULATE THIS
                         CompA-01            100       0
                                      Amy    100
                         CompA-02            400       1000
                                      Beth   200
                                      Cary   200
...
...
TOTAL                                        12000     2000                                                            

我的报告中有以下行组:

Supervisor Group
---Company Group
-----Project Group
----------Details

我能够在项目分组级别计算折扣列,如下所示

=Code.SumLookup(LookupSet(Fields!Project.Value,Fields!Project.Value,Fields!amount.Value,"Discounts"))

然后在总水平我计算折扣为:

=Sum(Fields!amount.Value, "Discounts")

我需要帮助弄清楚如何计算公司和主管级别的折扣总和。


正如你们中的许多人所建议的那样,我的查询是我只想继续并准确演示我面临的问题的问题。

正如建议的那样,我使用连接重新设计了查询

SELECT Sales.Supervisor, Sales.Company, Sales.Project, Sales.Person, Sales.SaleAmt, SUM(Discounts.Amount)
FROM Sales 
LEFT OUTER JOIN Discounts 
ON Sales.Company = Discounts.Company 
AND Sales.Project = Discounts.Project 
group by Sales.Supervisor, Sales.Company, Sales.Project, Sales.Person, Sales.SaleAmt, Discounts.Amount

创建了一个报告

在此处输入图像描述

报告预览是这样的在此处输入图像描述

请注意折扣值是如何总结错误的。我能做些什么来纠正这个问题?

4

3 回答 3

1

恕我直言,您正在为自己做太多的工作,让代码做到这一点。SSRS 内置于了解您所在分组的级别。EG:如果我有一个像 Sum(Discount) 这样的函数的详细级别,那么我添加一个“项目”分组并选择添加一个“标题”行。如果我将该计算放在“详细信息”行上方的新行中,您现在将按其他数据进行分组。然后,您可以按公司对项目进行分组,按主管对公司等进行分组。然后,您可以在不同的行上添加相同的计算,只需知道它所在的级别,它就会获得不同的值。

于 2013-07-09T19:45:03.593 回答
0

与其编写复杂的表达式或嵌套查询来连接这两个数据集,不如添加一个单独的数据集来获取查找所需的数据。例如,添加一个名为 CompanyDiscounts 的数据集,如下所示:

select Company, sum(Amount) as Discount
from DiscountsTable

现在您可以添加一个查找函数来获取公司级别的总折扣。

=Lookup(Fields!Company.Value, Fields!Company.Value, Fields!Discount.Value, "CompanyDiscounts")

您可以对 Suporvisor 级别重复这些步骤。

通常我不会推荐这样的方法,但是您的数据结构的性质适合这种解决方法。理想情况下,您将拥有一个带有关联折扣的销售 ID,以便您可以在一个查询中加入所有相关数据,并且只需使用分组聚合来填写表格。

于 2013-07-09T18:55:04.313 回答
0

请使用以下查询

SELECT Sales.Supervisor, 
       Sales.Company, 
       Sales.Project, 
       Sales.Person, 
       Sales.Sale, 
       Discounts.Amount
FROM  Sales 
LEFT OUTER JOIN Discounts ON Sales.Company = Discounts.Company 
                          AND Sales.Project = Discounts.Project
GROUP BY Sales.Supervisor, 
         Sales.Company, 
         Sales.Project, 
         Sales.Person, 
         Sales.Sale, 
         Discounts.Amount

在数据集中并在表格模式的帮助下,您将能够生成报告。我已经尝试过了,它奏效了。

于 2013-07-10T10:22:53.320 回答