【问题标题】:Create flat file that 'flattens' multiple rtansaction rows into one line in SQL*PLus在 SQL*PLus 中创建将多个 rtansaction 行“扁平化”为一行的平面文件
【发布时间】:2009-03-27 12:48:21
【问题描述】:

正如标题所说,我需要一种将多行扁平化为每个帐户一个 luine 输出的方法。例如表格如下所示:

账户交易

12345678 ABC

12345678 防御

12346578 GHI

67891011 ABC

67891011 JKL

我需要的输出是:

12345678|ABC|DEF|GHI

67891011|ABC|JKL

交易量未知。对于某些帐户,它可能是 1 或 2,一直到 100。

【问题讨论】:

    标签: recursion plsql flat-file


    【解决方案1】:

    您可以使用Tom Kyte's STRAGG function 的自定义版本来执行此操作,如下所示:

    select account||'|'||stragg(transaction)
    from mytable
    where ...
    group by account;
    

    给定的函数使用逗号分隔值,但您可以轻松地将其更改为使用“|”。

    使用 EMP 的示例(仍然使用逗号):

    SQL> select deptno || '|' || stragg(ename) names
      2  from emp
      3  group by deptno;
    
    NAMES
    --------------------------------------------------------------------------------
    10|CLARK,KING,FARMER,MILLER
    20|JONES,FORD,SCOTT
    30|ALLEN,TURNER,WARD,MARTIN,BLAKE
    

    【讨论】:

    • 不错!我不知道有这样的东西存在!我们已经编写了很多代码来实现这一点!
    • 是的,这是一个非常方便的功能。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2013-01-17
    • 2019-04-23
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多