创建“扁平化”的平面文件 在 SQL*PLus 中将多个 RTransaction 行合并为一行

发布于 2024-07-15 08:10:22 字数 312 浏览 10 评论 0原文

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

Account Transaction

12345678 ABC

12345678 DEF

12346578 GHI

67891011 ABC

67891011 JKL

我需要输出为:

12345678|ABC|DEF|GHI

67891011|ABC|JKL

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

As the title says, I need a method of flattening multiple rows into a one luine output per account. For example table looks like this:

Account Transaction

12345678 ABC

12345678 DEF

12346578 GHI

67891011 ABC

67891011 JKL

I need the output to be:

12345678|ABC|DEF|GHI

67891011|ABC|JKL

The amount of transactions is unknown. For some accounts it could be 1 or 2, all the way up to 100's.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月下伊人醉 2024-07-22 08:10:22

您可以使用 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

You can do this using a customised version of Tom Kyte's STRAGG function, like this:

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

The function as given uses commas to separate the values, but you can easily change it to use '|'.

An example using EMP (and with commas still):

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文