sql >> Database teknologi >  >> RDS >> Oracle

sql - ORA-00937:ikke en enkeltgruppegruppefunktion

Jeg anbefaler 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 vil sige, at gentagelse af forespørgslen er unødvendig. Jeg ændrede også datosammenligningerne til at bruge faktiske datoer. Jeg finder dette mere læsbart og vedligeholdeligt end at udtrække datodele.



  1. Dobbelte anførselstegn i Oracle-kolonnealiaser

  2. Sådan fungerer LIKE-operatøren i MySQL

  3. Indlæs xml i mysql-tabel med element

  4. Oprettelse af midlertidige tabeller i MySQL Stored Procedure