Oracle
 sql >> Baza danych >  >> RDS >> Oracle

sql - ORA-00937:nie jest to funkcja jednogrupowa

Polecam 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), () );

Oznacza to, że powtarzanie zapytania nie jest konieczne. Zmieniłem również porównania dat, aby używały rzeczywistych dat. Uważam, że jest to bardziej czytelne i łatwiejsze w utrzymaniu niż wyodrębnianie części dat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gdzie w Oracle przechowywane są klasy Java?

  2. Budowanie dynamicznego zapytania w C# (atak wstrzykiwania SQL)

  3. W SQL, co oznacza używanie nawiasów z OR?

  4. Wybierz tylko kolumny bez wartości Null w Oracle

  5. Wybierz szczegóły bazy danych i nazwy tabel w iSQL plus