2016-01-13 50 views
1

我有一個矩陣,該矩陣設置了一個稱爲「公司」的行組,一個稱爲「年」的列組和一個稱爲收入的年度費用總和的值字段。列組將最終具有通過用戶輸入提供的2列。最終的結果是一個矩陣,這將是這個樣子:比較2個動態創建的矩陣列以獲得差異

  Year 1 | Year 2 
Company: $500 $250 
Company2: $750 $250 

我想這樣做是列添加到計算到今年2從今年1變化的矩陣是有辦法做到這在矩陣內,例如添加一個新的列,該列與一個表達式比較行中的兩個條目,還是需要操作SQL代碼以創建一個在代碼中執行此操作的列?爲了在這裏,到底是DataSet的代碼的觀點,如果這是我需要走的路:

SELECT 
company.cmp_id 
,company.Company 
,ChargeDetails.[Bill To ID] 
,ChargeDetails.[Delivery Year] 
,ChargeDetails.Revenue 
FROM 
ChargeDetails 
LEFT OUTER JOIN company 
ON ChargeDetails.[Bill To ID] = company.cmp_id 
WHERE 
ChargeDetails.[Delivery Year] = @DeliveryYear 
OR 
ChargeDetails.[Delivery Year] = @ComparisonYear2 
ORDER BY ChargeDetails.[Delivery Year] DESC,ChargeDetails.Revenue DESC;` 

回答

0

我最終使用以下作爲更改列中的表達式。

=sum(iif(Fields!Delivery_Year.Value=Parameters!DeliveryYear.Value,1,0)*Fields!Revenue.Value) - sum(iif(Fields!Delivery_Year.Value=Parameters!ComparisonYear2.Value,1,0)* Fields!Revenue.Value) 
1

嘗試年級組之外添加一列在頭型Change或者你想放什麼,在下面的電池使用這個表達式:

=Sum(iif(Max(Fields!DeliveryYear.Value)=Fields!DeliveryYear.Value,Fields!Revenue.Value,0))- 
Sum(iif(Min(Fields!DeliveryYear.Value)=Fields!DeliveryYear.Value,Fields!Revenue.Value,0)) 

注意我的從其減去最小年(1)營業收入總和爲最大 年(2)收入總和。

在您的例子會產生:

+-----------+--------+--------+--------+ 
| Company | Year 1 | Year 2 | Change | 
+-----------+--------+--------+--------+ 
| Company A | 500 | 250 | -250 | 
+-----------+--------+--------+--------+ 

您可以定義變化在也許在百分比或任何其他措施許多方面,這只是一個例子,學什麼上述表達式是做爲了計算你需要的措施。


EDIT 1:

添加矩陣與該數據排列。

enter image description here

矩陣看起來像這樣一個在預覽:

enter image description here

確保您添加的變化欄DeliveryYear組外,如上面的圖像。還要檢查表達式中對應於你的字段名稱。

編輯2:

如果收入已經空值,你可以試試這個:

嘗試替換在查詢級別使用T-SQL ISNULL()功能的空值,改變你的查詢在這個部分,如下所示

,ISNULL(ChargeDetails.Revenue,0) 

但是,如果DeliveryYear具有空值,您可能希望忽略該記錄,所以嘗試將其排除在where子句中。

讓我知道你是否需要進一步的幫助。

+0

謝謝你的幫助是什麼,我基本上是試圖測量僅僅是在銷售從今年1至2年,因爲我們有業務往來的公司的區別,在使用你的代碼我在更改得到#錯誤列 – Tom

+0

@Tom,查看我的版本 –

+0

您好,我已經完成了您所建議的所有更改,並將我的矩陣設置爲與您所做的完全相同,但是我收到了#Error。 @alejandro蘇萊塔 Tom