sql >> Databasteknik >  >> RDS >> Oracle

sql - ORA-00937:inte en engruppsfunktion

Jag rekommenderar grouping sets :

select coalesce(location, 'Total') as location,
       coalesce(home_team_name, 'Total') as home_team_name,
       sum(case when match_date >= date '2018-01-01' and 
                     match_date < date '2018-02-01'
                then 1 else 0
           end) as january_2018,
       sum(case when match_date >= date '2018-02-01' and 
                     match_date < date '2018-03-01'
                then 1 else 0
           end) as february_2018,
       sum(case when match_date >= date '2018-03-01' and 
                     match_date < date '2018-04-01'
                then 1 else 0
           end) as march_2018,
       sum(case when match_date >= date '2018-01-01' and 
                     match_date < date '2019-01-01'
               then 1 else 0
           end) as total_2018
from match_results
group by grouping sets ( (location, home_team_name), () );

Det vill säga att det är onödigt att upprepa frågan. Jag ändrade också datumjämförelserna för att använda faktiska datum. Jag tycker att detta är mer läsbart och underhållbart än att extrahera datumdelar.



  1. Hur strukturerar jag en SQL-fråga för att hitta ett objekt som är förälder till två specifika andra objekt?

  2. Filtrera bort poster som inte är i detta datumformat oracle

  3. Tabell- eller kolumnnamn kan inte börja med numeriskt?

  4. SQL-fel #1071 - Angiven nyckel var för lång; max nyckellängd är 767 byte