Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果满足另一个条件,则SSRS/T-SQL求和_Sql_Sql Server_Tsql_Reporting Services - Fatal编程技术网

如果满足另一个条件,则SSRS/T-SQL求和

如果满足另一个条件,则SSRS/T-SQL求和,sql,sql-server,tsql,reporting-services,Sql,Sql Server,Tsql,Reporting Services,基本上我有一个处理事务的应用程序。每个事务都有一个事务编号。在前面的应用程序视图中,计算每个事务的总数,但它不存储在数据库中,并且不能更改 现在在SSR中,他们希望看到报告中的值。实现这一点的方法是匹配交易编号,如果它们匹配,无论它在多少条记录上加起来,有没有办法在SSR上实现这一点?或者更优雅的方法是在存储过程中执行 下面是一个例子,我知道它不起作用,但我只是想让你们知道我在这里要完成什么: SELECT transactionID , value , Sum

基本上我有一个处理事务的应用程序。每个事务都有一个事务编号。在前面的应用程序视图中,计算每个事务的总数,但它不存储在数据库中,并且不能更改

现在在SSR中,他们希望看到报告中的值。实现这一点的方法是匹配交易编号,如果它们匹配,无论它在多少条记录上加起来,有没有办法在SSR上实现这一点?或者更优雅的方法是在存储过程中执行

下面是一个例子,我知道它不起作用,但我只是想让你们知道我在这里要完成什么:

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将其加入到事务表中。还是要使用这些值创建一个运行的总报告?我回答了您上面的所有问题