Сбой функции LISTAGG в DB2 LUW 9.7 FP5 - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь объединить места доставки каждого поставщика в один список для каждого поставщика, как показано ниже.

Данные таблицы:

SUPPLIER_NAME|Ship_from|
Supplier A   |  IOSL1  |
Supplier A   |  IHMI1  |
Supplier A   |  IHMI2  |

Требуемый результат запроса:

SUPPLIER_NAME|     Ship_from     |
Supplier A   |IOSL1, IHMI1, IHMI2|

Похоже, что LISTAGG - это, вероятно, лучший / самый простой способ сделать это, но я не могу заставить его работать, следуя документации по документации DB2 для функции LISTAGG.

SQL:

select
    SUPPLIER_ID,
    LISTAGG(PROC_FLO_NAME, ', ') within group (order by PROC_FLO_NAME DESC) as Ship_from 
from rcx.RXPRF1
group by SUPPLIER_ID

Когда я пытаюсь выполнить этот запрос, я получаю сообщение об ошибке «Недопустимое использование токена ключевого слова GROUP FROM INTO», которое я не смог выяснить, почему.

Я использую DB2 Версии 9.7.500.702 Fix Pack 5 (найден с помощью команды db2level) с QMF 8.1 Fix Pack 15 (Unicode) для запуска запроса.

1 Ответ

0 голосов
/ 21 сентября 2018

LISTAGG был введен в DB2 LUW 9.7 Fix Pack 4.

https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.wn.doc/doc/c0056050.html

Fix Pack 4 также содержит следующие усовершенствования: Новая функция агрегирования, LISTAGG, быладобавлено.Функция LISTAGG объединяет набор строковых элементов в одну строку, объединяя строки.При желании может быть предусмотрена строка-разделитель, которая вставляется между непрерывными входными строками.Для получения дополнительной информации см. Статистическую функцию LISTAGG.

Однако вам (или вашему администратору БД) потребуется запустить db2updv97, чтобы активировать новую функцию.http://www -01.ibm.com / support / docview.wss? Uid = swg21588635

(или даже лучше, обновить до Db2 11.1; -)

...