Cómo seleccionar y orderar por columnas que no están en la statement Groupy By SQL – Oracle

Tengo la siguiente statement:

SELECT IMPORTID,Region,RefObligor,SUM(NOTIONAL) AS SUM_NOTIONAL From Positions Where ID = :importID GROUP BY IMPORTID, Region,RefObligor Order BY IMPORTID, Region,RefObligor 

Existen algunas columnas adicionales en las Positions tabla que quiero como salida para "mostrar datos" pero no quiero en el grupo por statement.

Estos son Site, Desk

El resultado final tendría las siguientes columnas:

 IMPORTID,Region,Site,Desk,RefObligor,SUM(NOTIONAL) AS SUM_NOTIONAL 

Idealmente, me gustaría que los datos se clasificaran como:

 Order BY IMPORTID,Region,Site,Desk,RefObligor 

¿Cómo lograr esto?

No tiene sentido include columnas que no forman parte de la cláusula GROUP BY. Considere si tiene un MIN (X), MAX (Y) en la cláusula SELECT, ¿de qué fila provienen otras columnas (no agrupadas)?

Si su versión de Oracle es lo suficientemente reciente, puede usar SUMAVERA () para mostrar la SUMA (agrupada) en cada fila de datos.

 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 

Alternativamente, necesita hacer un agregado del Site , columnas de Desk

 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 

Yo creo que esto es

 select IMPORTID, Region, Site, Desk, RefObligor, Sum(Sum(Notional)) over (partition by IMPORTID, Region, RefObligor) from Positions group by IMPORTID, Region, Site, Desk, RefObligor order by IMPORTID, Region, RefObligor, Site, Desk; 

… pero es difícil de decir sin más información y / o datos de testing.