Поточный метод Oracle для создания CSV для отношения - PullRequest
1 голос
/ 14 апреля 2009

У меня есть следующие таблицы:

ALERT (ID,Name)
   1  |  Alert A
   2  |  Alert B


ALERT_BRAND_XREF (ALERT_ID, BRAND_ID)
   1  | 1
   1  | 2
   2  | 1

BRAND (ID, NAME)
  1  | Brand A
  2  | Brand B

Я пытаюсь написать одно заявление, чтобы вернуть список предупреждений с соответствующими брендами в виде списка CSV в одном поле. Желаемые результаты:

 Alert A  |  Brand A, Brand B
 Alert B  |  Brand A

Есть ли способ сделать это без написания отдельной функции? Я хотел бы сделать это в одном отдельном операторе SQL, если это возможно.

Это Oracle 9i.

Ответы [ 4 ]

1 голос
/ 16 апреля 2009

Посмотрите на это решение , это очень полезно. Использование SYS_CONNECT_BY_PATH и аналитических функций.

1 голос
/ 14 апреля 2009

В MySQL это было бы легко с функцией GROUP_CONCAT(), но похоже, что в Oracle это выглядит немного грязно:

Oracle group_concat () обновлено (снова)

0 голосов
/ 05 октября 2015

В Oracle вы можете использовать wm_concat ()

SELECT a.Name , wm_concat(b.Name) FROM 
   ALERT a, 
   ALERT_BRAND_XREF  abx ,
   BRAND b 
  where a.id = abx.ALERT_ID 
   and abx.BRAND_ID = b.id 
  group by  a.Name;
0 голосов
/ 14 апреля 2009

Вот еще один способ превратить повторяющуюся группу в разделенный запятыми список. Он использует предложение MODEL диалекта SQL Oracle. (Oracle 10g)

http://plsqlnotes.blogspot.com/2007/09/using-model-for-generating-csv-by_2227.html#links

(Заменяет мой предыдущий неправильный ответ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...