Получена ошибка при использовании LISTAGG в моем коде - PullRequest
0 голосов
/ 28 декабря 2018

Я столкнулся с ошибкой в ​​моем запросе:

select
    ES.SHPMNT_REF as "SHIPMENT REF",
    listagg(OH.ONHAND_REF,' ')within group(order by ES.SHPMNT_REF) as "test",
    SO.LOAD as "PORT OF LOADING",
    SO.DSCHRG_CITY as "DEST"
from 
    BRDB.EXPORT_SHIPMENT ES 
    left outer join BRDB.EXPORT_SHIPPING_ORDERS SO on ES.SHPMNT_REF = SO.SHPMNT_REF 
    left outer join BRDB.EXPORT_ONHAND OH on ES.SHPMNT_REF = OH.SHPMNT_REF
where 
    ES.REVENUE_ID = 'G2402467' 
    and ES.SHIPMENT_TYPE in ('EDO','EHO')
group by ES.SHPMNT_REF

Ниже приведена полученная ошибка:

Выражение, начинающееся с "DSCHRG_CITY", указанного в предложении SELECT,Предложение HAVING или предложение ORDER BY не указано в предложении GROUP BY или входит в предложение SELECT, предложение HAVING или предложение ORDER BY с функцией столбца, а условие GROUP BY не указано. SQLCODE = -119, SQLSTATE =42803, ДРАЙВЕР = 4.19.49.2) [Код: -727, состояние SQL: 56098] Произошла ошибка при неявном системном действии типа "2".

Я не уверен, почему это произошло, но если я удалил "SO.LOAD"и" SO.DSCHRG_CITY ", тогда кодирование сработало.Что я делаю не так?

1 Ответ

0 голосов
/ 28 декабря 2018

Без использования группы

select
  ES.SHPMNT_REF as "SHIPMENT REF",
  listagg(OH.ONHAND_REF,' ')within group(order by ES.SHPMNT_REF) as "test",
  min(SO.LOAD) as "PORT OF LOADING",
  ming(SO.DSCHRG_CITY) as "DEST"
from BRDB.EXPORT_SHIPMENT ES 
left outer join BRDB.EXPORT_SHIPPING_ORDERS SO on 
  ES.SHPMNT_REF = SO.SHPMNT_REF 
left outer join BRDB.EXPORT_ONHAND OH 
  on ES.SHPMNT_REF = OH.SHPMNT_REF
where ES.REVENUE_ID = 'G2402467' and ES.SHIPMENT_TYPE in ('EDO','EHO')
group by ES.SHPMNT_REF

с группировкой

select
  ES.SHPMNT_REF as "SHIPMENT REF",
  listagg(OH.ONHAND_REF,' ')within group(order by ES.SHPMNT_REF) as "test",
  SO.LOAD as "PORT OF LOADING",
  SO.DSCHRG_CITY as "DEST"
from BRDB.EXPORT_SHIPMENT ES 
left outer join BRDB.EXPORT_SHIPPING_ORDERS SO on 
  ES.SHPMNT_REF = SO.SHPMNT_REF 
left outer join BRDB.EXPORT_ONHAND OH 
  on ES.SHPMNT_REF = OH.SHPMNT_REF
where ES.REVENUE_ID = 'G2402467' and ES.SHIPMENT_TYPE in ('EDO','EHO')
group by ES.SHPMNT_REF, SO.Load, SO.DSCHRG_CITY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...