SSIS: Oracle Несколько строк в один столбец вывод без STRAGG - PullRequest
2 голосов
/ 20 января 2010

Нужно создать список языков через запятую, если идентификатор совпадает.

Таблица 1:

ID | LangID
1    1
1    2
1    3
2    3
2    4
3    1

Таблица 2:

ID | Language
1    English
2    Spanish
3    French
4    German

Хотите получить результаты, которые выглядят так:

ID | Languages
1    English, Spanish, French
2    French, German
3    English

Вещи, которые я пробовал:

Стрэгг - SSIS дает мне «Неверный идентификатор»

SYS_Connect_By_Path - Не удается понять, как объединить идентификаторы для преобразования в строковые языки.

Есть предложения?

Ответы [ 2 ]

6 голосов
/ 20 января 2010

Существуют различные способы агрегирования строк для создания списка, разделенного запятыми - для получения более подробной информации см. эту ссылку . На основании примера в ссылке попробуйте:

SELECT x.id,
       LTRIM(MAX(SYS_CONNECT_BY_PATH(x.language,','))
       KEEP (DENSE_RANK LAST ORDER BY curr),',') AS employees
  FROM (SELECT a.id,
               b.language,
               ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY b.language) AS curr,
               ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY b.language) -1 AS prev
          FROM TABLE_1 a
          JOIN TABLE_2 b ON b.id = a.langid) x
GROUP BY x.id
CONNECT BY prev = PRIOR curr AND x.id = PRIOR x.id
START WITH curr = 1;
2 голосов
/ 10 июня 2011

Для 11g, проверьте функцию listagg

select t1.id, listagg(t2.language, ', ') within group (order by t2.language)
from t1, t2
where t1.langId = t2.id
group by t1.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...