如何编写sql查询以为每个分组记录生成组no

时间:2016-12-14 05:46:58

标签: sql oracle analytic-functions

以下是场景:

我有以下格式的数据:

    entryid ,          ac_no,   db/cr,     amt
    -----------------------------------------------
    1                   10      D      5   
    1                   11      C      5         
    2                   01      D      8                            
    2                   11      C      8         
    3                   12      D      10         
    3                   13      C      10         
    4                   14      D      5         
    4                   16      C      5         
    5                   14      D      2           
    5                   17      C      2           
    6                   14      D      3           
    6                   18      C      3         

我想要以下格式的数据:

到目前为止,我已通过查询

实现了前3列
select wm_concat(entryid),ac_no,db_cr,Sum(amt) from t1 group by ac_no,db_cr

    wm_Concat(entryid),ac_no, db/cr, Sum(amt),  set_id
    ------------------------------------------------
    1                   10    D      5           S1 
    2                   01    D      8           S1
    1,2                 11    C      13          S1
    3                   12    D      10          S2
    3                   13    C      10          S2
    4,5,6               14    D      10          S3 
    4                   16    C      5           S3
    5                   17    C      2           S3
    6                   18    C      3           S3


I want an additional column `set_id` that either shows this S1, S2.. or any number 1,2.. so that the debit & credit entries sets can be identified.

我根据他们的Ac_no值制作一组借记和贷记分录。 任何小小的帮助将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:0)

创建一个新列set,并为特定集提供唯一标识符。因此,例如前三个记录将设置id S1,接下来两个将具有S2,依此类推。

要区分transactionset,您可以使用列db/cr以及新添加的set列。您可以确定第3行是一个集合,因为它的事务类型是“C”,而事务的类型是“D”。

这里我假设您的交易只是借记,如果没有,请在问题中提供更多详细信息。希望这会有所帮助。