Sẽ không hợp lý khi bao gồm các cột không phải là một phần của mệnh đề GROUP BY. Hãy xem xét nếu bạn có MIN (X), MAX (Y) trong mệnh đề SELECT, thì các cột khác (không được nhóm lại) nên đến từ hàng nào?
Nếu phiên bản Oracle của bạn đủ gần đây, bạn có thể sử dụng SUM - OVER () để hiển thị SUM (được nhóm lại) so với mọi hàng dữ liệu.
SELECT
IMPORTID,Site,Desk,Region,RefObligor,
SUM(NOTIONAL) OVER(PARTITION BY IMPORTID, Region,RefObligor) AS SUM_NOTIONAL
From
Positions
Where
ID = :importID
Order BY
IMPORTID,Region,Site,Desk,RefObligor
Ngoài ra, bạn cần tạo tổng hợp từ Site
, Desk
cột
SELECT
IMPORTID,Region,Min(Site) Site, Min(Desk) Desk,RefObligor,SUM(NOTIONAL) AS SUM_NOTIONAL
From
Positions
Where
ID = :importID
GROUP BY
IMPORTID, Region,RefObligor
Order BY
IMPORTID, Region,Min(Site),Min(Desk),RefObligor