代码之家  ›  专栏  ›  技术社区  ›  Daniel

在SQL视图中筛选结果

  •  0
  • Daniel  · 技术社区  · 8 年前

    我有一个视图,其中包含从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
    

    问题是,可能有50条付款记录与( TransactionRelatedDocNumber )我不想把复制品加起来 TransactionValue 总数字膨胀的记录。有没有一种方法可以只选择第一个有重复的记录 TransactionRef 价值?

    我希望有一个简单的解决方案来保持数据在视图中,而不是转移到存储过程中。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Gordon Linoff    8 年前

    一种方法使用 row_number() :

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