需要基于sql中的匹配反转对记录进行分组

问题描述 投票:0回答:2

我有一个棘手的场景来汇总数据。

我的源表中的数据如下。

CustomerId  Transaction Type    Transaction Amount
1               Payment              100
1               ReversePayment      -100
1               payment              100
1               ReversePayment      -100
1               Payment              100
1               Payment              100

要求如下:

  • 如果付款是关联的反向付款且金额匹配,则将这两个记录相加。
  • 如果该付款没有关联的反向付款,则将其视为孤儿(不要加总)。>>
  • 我希望输出像这样。

  CustomerId    Transaction Type                Transaction Amount
   1                Payment,ReversePayment               0
   1                payment,ReversePayment               0
   1                payment                             100
   1               Payment                              100

在这种情况下,

  • 付款的第一条记录具有关联的反向付款(第二条记录,因此总和为0
  • 付款的第三条记录具有关联的反向付款(第四条记录,则总和为0
  • 第五和第六没有相关的冲销。不要汇总这些记录。
  • 第二个例子:

源中的数据如下:

 CustomerId Transaction Type    Transaction Amount
 1              Payment              100
 1              ReversePayment      -100
 1              payment              300
 1              ReversePayment      -300
 1               Payment              400
 1               Payment              500

预期输出

CustomerId      Transaction Type                Transaction Amount
 1              Payment,ReversePayment               0
 1              payment,ReversePayment               0
 1              payment                             400
 1              Payment                             500

第二个示例要求:-作为第一和第二条记录(付款及其相关的反向付款匹配),将这两个记录相加,输出为0。-作为第三和第四条记录(获得了付款及其相关的反向付款匹配),将这两条记录相加,输出为0。-第五和第六没有相关的冲销。不要汇总这些记录。

如果有任何解决方案,请帮助。

我有一个棘手的场景来汇总数据。我的源表中的数据如下。 CustomerId交易类型交易金额1付款100 1 ...

sql database oracle aggregate row-number
2个回答
0
投票

您可以枚举不同的类型,然后进行汇总:


0
投票

已编辑,包括第二种情况:

© www.soinside.com 2019 - 2024. All rights reserved.