在Oracle中按金额分组相似数据

时间:2016-06-02 11:33:02

标签: sql oracle range grouping

我有一个带有ac_id,txn_amt列的txn表。它将存储数据txn金额以及帐户ID。以下是数据示例

==> cscript D:\VB_scripts\SO\37563820.vbs
1 Null    Null
9 Nothing Nothing
     Null  = Nothing
not (Null  = Nothing)
     Null is Nothing
NOT (Null is Nothing)
==> D:\VB_scripts\SO\37563820.vbs(12, 1) Microsoft VBScript runtime error: Object required

我想以这样的方式编写查询,即所有在先前金额的10%范围内的金额应该组合在一起。输出应该是这样的:

AC_ID      TXN_AMT
10         1000
10         1000
10         1010
10         1030
10         5000
10         5010
10         10000
20         32000
20         32200
20         5000

我尝试使用LAG功能,但仍然无能为力。这是我尝试过的代码段:

AC_ID  TOTAL_AMT  TOTAL_CNT GROUP
10     4040       4         1
10     10010      2         2
20     64200      2         3
20     5000       1         4

任何线索或帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:4)

如果之前的意味着"最大数量小于",那么你可以这样做。您可以找到间隙的位置(即大于10%的差异)。然后,您可以通过计算间隙数来指定一个组:

=IF(RIGHT(A2;4)="jjjj";TEXT(A1;"yyyy");TEXT(A1;"jjjj"))