簡體   English   中英

如何計算左聯接中各列的總和?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM