基本上我有一个处理交易的应用程序。每笔交易都有一个交易号。在前面的应用程序视图中,计算每个事务的总数,但它不存储在数据库中(并且不能更改)
现在,在SSRS中,他们希望看到报告中的价值。这样做的方法是匹配交易号码,如果它们匹配(无论有多少记录),它会添加它们是否有办法在SSRS上执行此操作?或者更优雅的方法是在存储过程中执行此操作。
以下是我知道不会起作用的例子,只是为了让你知道我在这里想要完成的事情:
SELECT transactionID
, value
, Sum(Case When transactionID = TransactionID Then Value Else 0) As Total
编辑:回复一些评论,我做了这个编辑。首先在上面我犯了一个错误并且做了TransactionID = transaction但它应该是它当前的。
继续...为了做到这一点,我需要将交易号与数据集中的其他交易号相匹配,看看是否有匹配。为了说明我在下面做了这个例子:
这是一个示例数据集:
从这个数据集中,我应该在报告中获得这些值:
因此,对于每一行,我希望看到每条记录的完整总数(TransID),而不是总数。
答案 0 :(得分:0)
这应该可以解决问题
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
答案 1 :(得分:0)
另一种做法
select a.transid,
a.value,
(select sum(b.value) from yourTable b where b.transid = a.transid) as Total
from yourTable a
答案 2 :(得分:0)
Window functions虽然更加有趣:
SELECT TransactionId
, Value
, SUM(Value) OVER(PARTITION BY TransactionId) AS Total
FROM SomeTable