Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

sql - ORA-00937:không phải là một hàm nhóm đơn

Tôi đề xuất 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), () );

Có nghĩa là, việc lặp lại truy vấn là không cần thiết. Tôi cũng đã thay đổi so sánh ngày để sử dụng ngày thực tế. Tôi thấy điều này dễ đọc và dễ bảo trì hơn là trích xuất các phần ngày tháng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo truy vấn CẬP NHẬT TRẢ LẠI trong Hibernate

  2. Bộ đệm Oracle PL / SQL UTL_FILE.PUT

  3. Oracle XE 11g không tìm thấy cơ sở dữ liệu XE

  4. Hàm Concat không hoạt động - số lượng đối số không hợp lệ

  5. xóa mili giây khỏi trường oracle tmstmp