sql >> Database teknologi >  >> RDS >> Oracle

Sådan vælges og sorteres efter kolonner, der ikke er i Groupy By SQL-sætning - Oracle

Det giver ikke mening at inkludere kolonner, der ikke er en del af GROUP BY-sætningen. Overvej, om du har en MIN(X), MAX(Y) i SELECT-sætningen, hvilken række skal andre kolonner (ikke grupperet) komme fra?

Hvis din Oracle-version er ny nok, kan du bruge SUM - OVER() til at vise SUM (grupperet) mod hver datarække.

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

Alternativt skal du lave en aggregering ud af Site , Desk kolonner

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. Dataforbindelsesændringer i 2020.24

  2. Automatiser sikkerhedskopiering og vedligeholdelsesjob ved hjælp af vedligeholdelsesplan i SQL Server

  3. Hvordan laver man den rekursive SELECT-forespørgsel i MySQL?

  4. En biblioteksdatamodel