正如标题所说,我需要一种将多行扁平化为每个帐户一个 luine 输出的方法。例如表如下所示:
账户交易
12345678 ABC
12345678 DEF
12346578 GHI
67891011 ABC
67891011 JKL
我需要输出为:
12345678|ABC|DEF|GHI
67891011|ABC|JKL
交易金额未知。对于某些帐户,它可能是 1 或 2,一直到 100。
您可以使用自定义版本的 Tom Kyte 的 STRAGG 函数来执行此操作,如下所示:
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