在SQL视图中过滤结果

时间:2018-08-02 11:10:24

标签: sql view

我有一个视图,该视图具有数千个从SAP视图中提取的财务交易记录。该视图适用于除付款以外的所有交易类型(发票,贷方,采购订单)。这是由于付款记录重复了它引用的发票数量。下面的示例:

TransactionMstID    SupplierID  DebtorID    TransactionDate TransactionSubmissionDate   TransactionRef  TransactionValue    TransactionStatus   CurrencyType    TransactionRelatedDocNumber
538685  46  22  2016-05-03  2018-08-02  50356   123578.78   Current ZAR 382
538689  46  22  2016-05-03  2018-08-02  50356   123578.78   Current ZAR 386

问题是付款可能与(TransactionRelatedDocNumber相关的记录有50条,我不想对重复的TransactionValue条记录进行求和,因为这会增加总数。有没有办法只选择具有重复的TransactionRef值的第一条记录?

我希望对此有一个简单的解决方案,以便将数据保留在视图中,而不是移到存储过程中

1 个答案:

答案 0 :(得分:1)

一种方法使用row_number()

select sum( . . . )
from (select t.*,
             row_number() over (partition by TransactionRef order by TransactionMstID) as seqnum
      from t
     )
where seqnum = 1;