[英]How to calculate the sum of various columns in a left join?
在SSRS Report Builder 3.0中,我有兩個表,一個表是產品列表(含利潤),另一個表是產品的已售附件的列表(含其單個利潤)。
我正在制作一份報告,以顯示出售的每種產品,商品的利潤,每種附加產品的利潤以及總利潤。
我正在使用此查詢導入數據(為簡單起見,省略了其他字段):
SELECT
Products.DealID AS DealID
,Profit
,AddonTypeType
,AddOnProfit
FROM
Products
LEFT OUTER JOIN productAddOns
ON Products.DealID = productAddOns.DealID
我的表如下所示(請注意,我不知道什么時候會調用額外的Add或可能有多少):
發生的情況是,如果一個產品有兩個附加組件,則它使用的利潤總計為兩倍。 在上面的屏幕截圖中,第一列總計應為108.33 + 843.75= 952.08
,但第二次添加843.75
顯示1795.83
。
總計框僅使用
=Sum(CDbl(Fields!Profit.Value))
誰能幫助解釋為什么會這樣,以及如何正確進行計算?
修改:這是一個動態查詢的示例,它可以容納靈活數量的產品插件,並且不需要任何硬編碼。
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)
我最終要做的(至少直到找到更好的解決方案為止)是僅針對產品查詢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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.