sql >> Databasteknik >  >> RDS >> Oracle

Hur man väljer och sorterar efter kolumner som inte finns i Groupy By SQL-sats - Oracle

Det är inte meningsfullt att inkludera kolumner som inte är en del av GROUP BY-satsen. Tänk på om du har ett MIN(X), MAX(Y) i SELECT-satsen, vilken rad ska andra kolumner (ej grupperade) komma från?

Om din Oracle-version är tillräckligt uppdaterad kan du använda SUM - OVER() för att visa SUMMA (grupperad) mot varje datarad.

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 måste du skapa en sammanställning av Site , Desk kolumner

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. Konvertera textvärde i SQL Server från UTF8 till ISO 8859-1

  2. Ingen dialektmappning för JDBC-typ:-9

  3. Hur man kör en Oracle-lagrad procedur via en databaslänk

  4. Kan jag blanda MySQL API:er i PHP?