如果满足另一个条件,则SSRS/T-SQL求和
基本上我有一个处理事务的应用程序。每个事务都有一个事务编号。在前面的应用程序视图中,计算每个事务的总数,但它不存储在数据库中,并且不能更改 现在在SSR中,他们希望看到报告中的值。实现这一点的方法是匹配交易编号,如果它们匹配,无论它在多少条记录上加起来,有没有办法在SSR上实现这一点?或者更优雅的方法是在存储过程中执行 下面是一个例子,我知道它不起作用,但我只是想让你们知道我在这里要完成什么:如果满足另一个条件,则SSRS/T-SQL求和,sql,sql-server,tsql,reporting-services,Sql,Sql Server,Tsql,Reporting Services,基本上我有一个处理事务的应用程序。每个事务都有一个事务编号。在前面的应用程序视图中,计算每个事务的总数,但它不存储在数据库中,并且不能更改 现在在SSR中,他们希望看到报告中的值。实现这一点的方法是匹配交易编号,如果它们匹配,无论它在多少条记录上加起来,有没有办法在SSR上实现这一点?或者更优雅的方法是在存储过程中执行 下面是一个例子,我知道它不起作用,但我只是想让你们知道我在这里要完成什么: SELECT transactionID , value , Sum
SELECT transactionID
, value
, Sum(Case When transactionID = TransactionID Then Value Else 0) As Total
编辑:为了回应我的一些评论,我做了这个编辑。首先在上面我犯了一个错误,做了TransactionID=transaction,但它应该是当前的状态
继续。。。为了做到这一点,我需要将交易编号与数据集中的其他交易编号进行匹配,并查看是否存在匹配。为了说明这一点,我做了以下示例:
这是一个示例数据集:
TransId:1值:200
TransId:2值:300
TransId:1值:100
TransId:2值:500
TransId:1值:400
从该数据集中,我应在报告中获得以下值:
传输:1值:200总计:700
传输:2值:300总计:800
传输:1值:100总计:700
传输:2值:500总计:800
传输:1值:400总计:700
因此,对于每一行,我希望看到每个recordTransID的完整总计,而不是运行总计。这应该可以解决问题
select transactionID
, value
, TransactionSum
from MyTable t
join (select transactionID
, sum (value) as TransactionSum
from MyTable
group by transactionID
) x on t.transactionID = x.transactionID
只是另一种方式而已
select a.transid,
a.value,
(select sum(b.value) from yourTable b where b.transid = a.transid) as Total
from yourTable a
不过,它们更有趣:
SELECT TransactionId
, Value
, SUM(Value) OVER(PARTITION BY TransactionId) AS Total
FROM SomeTable
这样做的方法是匹配交易号,匹配什么?我不明白为什么你贴的东西不起作用?交易是报表的内部内容吗?放在桌子上的什么地方?我们需要有关此的更多详细信息。是否要将交易总数添加到报表的每个交易记录中?即TranId1,值2.2,总计8.0 TranId1,值5.8,总计8.0?如果是这样的话,只需使用tranid创建一个总CTE,并使用该id将其加入到事务表中。还是要使用这些值创建一个运行的总报告?我回答了您上面的所有问题