sql >> Database >  >> RDS >> Oracle

Kolommen selecteren en ordenen die niet in Groupy By SQL-instructie staan ​​- Oracle

Het heeft geen zin om kolommen op te nemen die geen deel uitmaken van de GROUP BY-clausule. Overweeg of u een MIN(X), MAX(Y) in de SELECT-component hebt, uit welke rij moeten andere kolommen (niet gegroepeerd) komen?

Als uw Oracle-versie recent genoeg is, kunt u SUM - OVER() gebruiken om de SUM (gegroepeerd) voor elke gegevensrij weer te geven.

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

Als alternatief moet u een aggregaat maken van de Site , Desk kolommen

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. GDPR-compliance en uw SQL Server

  2. Gegevens ophalen uit MySQL-database naar html-vervolgkeuzelijst

  3. Indexen gebruiken om de prestaties van MySQL-query's te verbeteren

  4. Hoe u de sortering van uw verbinding in MySQL kunt weergeven