Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

sql - ORA-00937:एकल-समूह समूह फ़ंक्शन नहीं

मेरा सुझाव है 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), () );

यानी क्वेरी को दोहराना अनावश्यक है। मैंने वास्तविक तिथियों का उपयोग करने के लिए दिनांक तुलनाओं को भी बदल दिया है। मुझे तारीख के हिस्सों को निकालने की तुलना में यह अधिक पठनीय और रखरखाव योग्य लगता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में अलग-अलग कॉलम में varchar को विभाजित करें

  2. Oracle में अगला कारोबारी दिन (सोमवार - शुक्रवार)?

  3. कॉलम में पार्सिंग पाइप सीमांकित स्ट्रिंग?

  4. ऑरैकल पीडीओ कनेक्शन में फ़ील्ड नाम का उपयोग करके परिणाम प्राप्त करते समय अपरिभाषित अनुक्रमणिका त्रुटि

  5. क्या Oracle Sql में !=और <> के बीच कोई अंतर है?