Не удается сгруппировать данные в Oracle

У меня есть запрос Oracle, который в настоящее время отображает все мои данные

$qu = 'SELECT * FROM baan.tcbpur012777 WHERE T$RQNO LIKE :bagian GROUP BY tcbpur012777.T$RQNO ORDER BY T$RQNO OFFSET '.$start.' ROWS FETCH NEXT '.$perPage.' ROWS ONLY';
$r = oci_parse($conn, $qu);
oci_bind_by_name($r,':bagian',$bag);
oci_execute($r);
$n = oci_fetch_all($r, $q);

То, что я хочу сделать, это сгруппировать дублированные данные в одно, но каждый раз, когда я использую группу по синтаксису, появится предупреждение и сделает мой синтаксис недействительным.

Warning: oci_fetch_all(): ORA-24374: define not done before fetch or execute and fetch in

Кто-нибудь может сказать, пожалуйста, что не так с моим синтаксисом?
заранее спасибо

-1

Решение

Ты делаешь:

SELECT   *
FROM     table_name
GROUP BY column_name

Вам нужно либо включить все столбцы в GROUP BY пункт или для каждого столбца не в GROUP BY пункт вам нужно использовать функция агрегации объединить это по группе. Предполагая, что ваша таблица имеет более одного столбца, то SELECT * получит все эти столбцы, но GROUP BY column_name группируется только по одному из столбцов, а другие столбцы не являются частью агрегации, поэтому ORA-00979 not a group by expression исключение.

Что-то вроде:

SELECT   T$RQNO,
MAX( Col1 ) AS MaxCol1,
MIN( Col2 ) AS MinCol2,
LISTAGG( Col3, ',' ) WITHIN GROUP ( ORDER BY Col4 ) AS ListOfCol3
FROM     baan.tcbpur012777
WHERE    T$RQNO LIKE :bagian
GROUP BY T$RQNO
ORDER BY T$RQNO
OFFSET     '.$start.' ROWS
FETCH NEXT '.$perPage.' ROWS ONLY
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector