sql >> Databáze >  >> RDS >> Oracle

Jak vybrat a seřadit podle sloupců, které nejsou v SQL příkazu Groupy By - Oracle

Nemá smysl zahrnout sloupce, které nejsou součástí klauzule GROUP BY. Zvažte, zda máte MIN(X), MAX(Y) v klauzuli SELECT, ze kterého řádku by měly pocházet ostatní sloupce (neseskupené)?

Pokud je vaše verze Oracle dostatečně aktuální, můžete použít SUM - OVER() k zobrazení SUM (seskupeného) u každého řádku dat.

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

Případně je třeba vytvořit souhrn z Site , Desk sloupce

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. SQLite - Vyberte Data

  2. Jak zkontrolovat uživatelská oprávnění v MySQL Workbench pomocí GUI

  3. SQL Server Management Studio (SSMS)

  4. Seznam prvků formátu Datetime v Oracle