Создайте плоский файл, который «сплющивает» несколько строк rtansaction в одну строку в SQL * PLus - PullRequest
1 голос
/ 27 марта 2009

Как гласит заголовок, мне нужен метод сглаживания нескольких строк в один выходной за один аккаунт. Например, таблица выглядит так:

Транзакция по счету

12345678 ABC

12345678 DEF

12346578 GHI

67891011 ABC

67891011 JKL

Мне нужен вывод:

12345678 | ABC | DEF | ГХИ

67891011 | ABC | JKL

Сумма транзакций неизвестна. Для некоторых учетных записей это может быть 1 или 2, вплоть до 100.

1 Ответ

1 голос
/ 27 марта 2009

Вы можете сделать это, используя настроенную версию функции 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
...