2017-09-19 58 views
0

尚未在SSRS中執行此操作,我正在撓頭。SSRS根據同一行中的其他單元格在一個單元格中查詢結果

基本上,我有一個基於DataSet 1的Tablix。Tablix在一個名爲AssemblyName的字段上進行排序和分組,它也是第一個列值。第二列值基於稱爲數量的字段的總和。 (在數據庫表中,每行都有一個AssemblyName值和一個Quantity值)

棘手的部分是這樣的:數據庫中還有另一個表,其中包含AssemblyName和Quantity的'snapshot'(基於舊的)數據。

而在我的Tablix中,我希望在行的第一個單元格中顯示一個單元格,該單元格的總數爲AssemblyName的舊數量。舊數據將從數據庫表中取出。

基本上,我們的目標是顯示一個由AssemblyName分組和排序的Tablix,並在Tablix中包含以下列:程序集名稱(來自當前數據庫表),當前數量總和(來自當前數據庫表)舊數量總和(來自另一個數據庫表與舊數據)。

我有一切工作,除了舊數據庫表中包含舊數量總和的單元格。

舊的數據庫表位於同一個數據庫中,所以這不是問題,我的問題是,創建基於同一Tablix行中AssemblyName的值在舊錶中對數量進行求和的查詢。

我試着基於來自數據集1拉到參數的查詢創建數據集2,然後在舊的數量單元中寫入此表達式:

=Sum(Fields!Quantity.Value, "Dataset 2") 

我在得到的每一個細胞都空值第三列,其中包含上述表達式。我假設它是因爲數據集2實際上沒有在同一個tablix行中讀取AssemblyName的值。然而,我想要做的本質是將包含AssemblyName的tablix中的第一列的值傳遞給數據集2的查詢中的WHERE子句,該數據集的參數依次顯示在第三列的單元格中同樣的tablix行。

萬一有幫助,從數據集2查詢如下:

SELECT AssemblyName 
, Quantity 
FROM OldData 
WHERE AssemblyName = @compare_AssemblyName 

我希望這是有道理的,但根據需要,這樣我可以澄清,請提問。

問候。

+0

或許我可以總結在查詢中老數量的數據集1 ? –

+0

您能否顯示來自兩個數據集的一些樣本數據? – Harry

+1

你試過查找嗎?像這樣= LookUp(Fields!AssemblyName.Value,Fields!AssemblyName.Value,Fields!Quantity.Value,「dataset_oldvalue」)。 – Harry

回答

0

你應該能夠與新的數據一起拉老數據在相同的查詢,那麼就總結各自的領域:

SELECT AssemblyName 
    , NewQuantity = n.Quantity 
    , OldQuantity = COALESCE(o.Quantity, 0) 
FROM NewData n 
    LEFT JOIN OldData o 
     ON n.AssemblyName = o.AssemblyName 
WHERE n.AssemblyName = @compare_AssemblyName 
相關問題