我们可以在ssrs报告生成器中获取上表的同一列的单元格的值吗?怎么样?

时间:2015-05-05 16:27:05

标签: reporting-services sql-server-2014 ssrs-tablix reportbuilder

我已经编辑了我的问题并用新的解释替换了之前的解释。 我想以前我不能清楚地解释我的问题。这是我的情景:

Col1  |Col2  |Col3  |Col4   |Col5  | Col6  
------|------|------|-------|------| 3333.00 (Table 1)  
------|------|------|  15.00|  0.00| 3348.00 (Table 2)  
------|------|------|   0.00|550.00| 2798.00 (Table 2)
     Sub ToTal:-----|  15.00|550.00| 2798.00 (Table 3)

在本报告中,表1的值(3,333.00)为期初余额。对于Table2和Table3,col4是Deposit,Col5是Withdraw。表2和表3的最后一栏是期末余额。因此,规则是,表2第一行的期末余额应计算为(ClosingBalance = OpeningBalance + Deposit - Withdrawal)。并且第一行的结算余额应为第二行的开仓余额。表3与它们无关。

现在的问题是3333.00来自查询所以我们可以很容易地计算3348.00,但我不知道如何计算2798.00,因为它需要上面的单元格值3348.00。类似地,如果表2生成10行而不是最后一列的第一个值应该从3333.00计算,剩余的行将从上面的单元格计算它们的值,即2798.00取决于3348.00,如果有下一行,它将取决于2798.00。所以我这样做了:

IIf(RowNumber(DatasetName) = 1, value of Table1(3333.00) + and remaining values to calculate 3348.00, Previous(ReportItems!MyTextBoxName.Value) + other values)

现在它给了我错误:

  

textrun的值表达式'Amount8.Paragraphs [0] .TextRuns [0]'在报表项上使用聚合函数。聚合函数只能用于页眉和页脚中包含的报表项。

我搜索了不同的论坛,发现在这种情况下我无法使用ReportItems。那么,我该怎么办?

我知道我的情景很复杂,解释起来比较复杂,但我尽力了。请告诉我你的任何解决方案。

2 个答案:

答案 0 :(得分:0)

尝试上一个(复制MyTextboxName中使用的表达式

答案 1 :(得分:0)

您可以在SQL语句中使用Lag函数来获取以前的值。

SELECT Field1, Lag(Field1,1,NULL) OVER(PARTITION BY .... ORDER BY ....)
FROM Table1..... 

这里有几篇文章可以帮助您了解滞后细节

Intro to Lead and Lag By Pinal Dave

Lead and Lag function article in DatabaseJournal