sql >> Database >  >> RDS >> Oracle

sql - ORA-00937:geen groepsfunctie voor één groep

Ik raad grouping sets aan :

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

Dat wil zeggen, het herhalen van de vraag is niet nodig. Ik heb ook de datumvergelijkingen gewijzigd om werkelijke datums te gebruiken. Ik vind dit leesbaarder en beter te onderhouden dan het extraheren van datumdelen.



  1. Wanneer en hoe de SQL PARTITION BY-clausule te gebruiken?

  2. ClassCastException:java.math.BigInteger kan niet worden gecast naar java.lang.Lang bij verbinding met MySQL

  3. migratiepatronen van productiegegevens bij continue levering

  4. Hoe NULL als parameter te beperken tot SQL Server opgeslagen procedure?