2009-03-27 7 views
1

Как говорится в названии, мне нужен метод сглаживания нескольких строк в один вывод на одну линию для каждой учетной записи. Например таблица выглядит следующим образом:Создайте плоский файл, который «сглаживает» несколько строк rtansaction в одной строке в SQL * PLUS

Счет сделки

12345678 ABC

12345678 DEF

12346578 ГХИ

67891011 ABC

67891011 JKL

Мне нужна выход будет:

12345678 | ABC | DEF | ГХИ

67891011 | ABC | JKL

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

ответ

1

Вы можете сделать это, используя специальную версию Tom Kyte's STRAGG function, как это:

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

Функция как данность использует запятые для разделения значений, но вы можете легко изменить его использовать «|».

Пример использования ЭМИ (и с запятыми еще):

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 
+0

приятно! Я понятия не имел, что это было! мы написали много кода для этого! – Preets

+0

Да, это очень удобная функция. –