1

我有一張銷售表和一張折扣表。手動合併或彙總SSRS組中的數據字段

主數據集是銷售表具有每人銷售額。

每個人只與一個項目關聯,每個項目只有一個主管。

第二個數據集 - 折扣表有折扣條目中的每個項目

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 

我能計算出Discoun在項目分組程度t列如下

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

然後在總I級計算作爲折現:

=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 

創建像

enter image description here

報告預覽這樣enter image description here

注意到報告中的折現值是如何總結重新設計了查詢一切都錯了。我能做些什麼來糾正這個問題?

回答

0

與其編寫複雜表達式或嵌套查詢來加入這兩個數據集,添加單獨的數據集以獲取查找所需的數據會更容易。例如,添加一個數據集被稱爲CompanyDiscounts這將是這樣的:

select Company, sum(Amount) as Discount 
from DiscountsTable 

現在你可以添加查找功能來獲得公司級的總折扣。

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

您可以爲Suporvisor級別重複這些步驟。

通常我不會推薦這樣的方法,但是您的數據結構的本質適用於這種解決方法。理想情況下,您需要一個帶有相關折扣的銷售ID,以便您可以在一個查詢中加入所有相關數據,並使用分組聚合來填寫表格。

+0

您的建議的問題是Adam在A公司下面,我將看到2000的折扣,而不是隻有1000的折扣。因爲從技術上講,Adam只與公司A的項目CompA-01和CompA-02項目相關聯 – superartsy

+0

這真的來了直至數據結構設計問題。您正試圖根據多個條件來匹配來自不同數據集的值。我建議查看錶/查詢設計,並遵循標準的關係數據庫準則,以便您可以讓SSRS使用其內置的分組功能。你真的不應該爲這樣的事情使用多個數據集。 – StevenWhite

+0

問題在於折扣與人員級別無關。只有項目級別及以上。因此創建一個聚合連接將無法正常工作。 – superartsy

1

你爲自己做了太多的工作恕我直言,代碼做到這一點。 SSRS內置了對您所在分組級別的理解。 EG:如果我有一個像Sum(折扣)這樣的函數的細節級別,那麼我添加一個'Project'分組並選擇添加一個'header'行。如果我將這一計算放在「Detail」行上方的新行中,則您現在正按其他數據進行分組。然後,您可以按公司對項目進行分組,然後按主管對公司進行分組等。然後,您可以將相同的計算添加到不同的行中,僅通過知道其級別就可以實現不同的值。

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 

,並用表格模式的幫助下,你將能夠生成報告。 我試過了,它工作。

+0

表格模式是什麼意思?此外,折扣金額將顯示在人員級別,這是不正確的。它只需要顯示從項目和 – superartsy

+0

也主要的問題是折扣是不相關的在人的水平。只有項目級別及以上。因此創建聯接和聚合可能不一定有效 – superartsy