Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да изберете и подредите по колони, които не са в Groupy By SQL израз - Oracle

Няма смисъл да включвате колони, които не са част от клаузата GROUP BY. Помислете дали имате MIN(X), MAX(Y) в клаузата SELECT, от кой ред трябва да идват другите колони (не групирани)?

Ако вашата версия на Oracle е достатъчно нова, можете да използвате SUM - OVER(), за да покажете SUM (групирана) спрямо всеки ред с данни.

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

Като алтернатива, трябва да направите агрегат от Site , 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите максималната възможна дата в Oracle?

  2. Как да АКТУАЛИЗИРАТЕ една колона, като използвате друга колона в друга таблица? SQL грешка:ORA-00933:SQL командата не е приключила правилно

  3. Как да проверя дали стойността на DataReader не е нула?

  4. Разделяне на низ на няколко реда в Oracle

  5. ORA-00904:невалиден идентификатор