无法在Oracle中对数据进行分组

时间:2017-11-01 06:55:18

标签: php 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);

我想做的是将重复的数据分组为一个,但每次我按语法使用group时,都会出现警告并使我的语法无效。

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

任何人都可以告诉我我的语法有什么问题吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

你在做:

GROUP BY

您需要include all the columns in the GROUP BY clause或者,对于不在SELECT *子句中的每个列,您需要使用aggregation function将其聚合在整个组中。假设您的表有多个列,那么GROUP BY column_name将获取所有这些列,但ORA-00979 not a group by expression仅按其中一列进行分组,其他列不是聚合的一部分,因此它将抛出{{ 1}}例外。

类似的东西:

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