0

在SSRS Report Builder 3.0中,我有兩個表格,一個是產品列表(帶有利潤),另一個是銷售給該產品的附加產品列表(帶有其個人利潤)。如何計算左連接中各列的總和?

我正在製作一份報告,以顯示出售的每件產品,該項目的利潤,每項增加的利潤和總利潤。

我進口使用此查詢的數據(附加字段爲了簡化,不):

SELECT 
    Products.DealID AS DealID 
    ,Profit 
    ,AddonTypeType 
    ,AddOnProfit 
FROM 
    Products 
    LEFT OUTER JOIN productAddOns 
    ON Products.DealID = productAddOns.DealID 

我的表看起來像這樣(請注意,我不知道未來的時候什麼額外再添會被調用或者有多少可能有):

Current Table

正在發生的事情是,如果一個產品有兩個附加組件,它是在使用總利潤的兩倍。在上面的屏幕截圖中,第一列總數應該是108.33 + 843.75= 952.08,但是它第二次加入843.75並顯示1795.83

總箱子被簡單地使用

=Sum(CDbl(Fields!Profit.Value)) 

任何人都可以幫助解釋爲什麼發生這種情況,以及如何得到它的正確計算?

回答

0

MODIFIED: 下面是一個動態查詢的例子,它可以容納靈活數量的產品插件並且不需要任何硬編碼。

DECLARE @dynamicSqlPivot AS NVARCHAR(MAX) 

DECLARE @columnName AS NVARCHAR(MAX) 

SELECT @columnName = ISNULL(@columnName + ',',' ') 
    + QUOTENAME(addonTypeType) 
    FROM (SELECT DISTINCT addonTypeType FROM Productaddons) AS prodadds 



SET @dynamicSqlPivot = 
N'SELECT * 
FROM (
SELECT 

    P.DealID AS dealID 
    ,p.Profit 
    ,a.AddonTypeType 
    ,a.AddonProfit 


FROM 
    Products p 
    LEFT OUTER JOIN Productaddons a 
    ON P.dealID = A.DealID 
    ) AS s 


PIVOT (
SUM(s.addonProfit) 
FOR s.addonTypeType IN (' + @columnName + ')) AS pvttable' 

EXEC (@dynamicsqlpivot) 
+0

我同意這是發生了什麼,但我不認爲我可以使用您的解決方案。這些產品可以有一個理論上無限的添加數量,並會根據供應商的不同而有所不同,所以我沒有一個可以以這種方式使用的可靠列表。此外,我拉動更多的信息,而不僅僅是產品和利潤。 – user2603293

+0

在這種情況下,數據透視不起作用。我最終會得到一個不斷變化的列列表,這些列需要被顯示,並且無法選擇它們,因爲我不提前知道這些名稱。另外,我需要更多關於每種產品的信息,而不僅僅是名稱和總利潤。 – user2603293

0

最後我做什麼(至少直到我找到一個更好的解決方案)是使上只產品只是dealID查詢,並從該參數。在表格中,我使用該參數來執行MultiLookup和自定義代碼以添加MultiLookup對象中的所有項目。

=Code.SumLookup( MultiLookup( Parameters!DealNumbers.value, Fields!DealID.Value, Fields!FrontEndGross.Value, "CompleteDeals" ) )

的總和的一個例子就是在這裏發現:http://salvoz.com/blog/2013/05/27/sum-result-of-ssrs-lookupset-function/