我有一个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
任何人都可以告诉我我的语法有什么问题吗? 提前致谢
答案 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