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

एकाधिक कॉलम के साथ ऑरैकल रोलअप फ़ंक्शन

मुझे ग्रुपिंग सेट क्लॉज के साथ सटीक सेट निर्दिष्ट करना आसान लगता है:

WITH data(val1, val2, val3) AS
     ( SELECT 'a' ,'a-details' ,'1' FROM DUAL
     UNION ALL
     SELECT 'b' ,'b-details' ,'2' FROM DUAL
     UNION ALL
     SELECT 'c' ,'c-details' ,'3' FROM DUAL
     )
SELECT NVL(val1,'Total Result'),
     val2,
     SUM(val3) tot
from data
group by grouping sets ((val1, val2),());

मुझे संदेह है कि यह अधिक कुशल है, क्योंकि यह सीधे गणना के स्तरों को निर्दिष्ट करता है।

http://sqlfiddle.com/#!4/8301d/3

CUBE और ROLLUP बड़ी संख्या में एकत्रीकरण स्तरों को स्वचालित रूप से उत्पन्न करने के लिए आसान हैं (उदाहरण के लिए एक आयामी पदानुक्रम में प्रत्येक स्तर), और यदि आप एक बड़े CUBE-जनित स्तरों के एक छोटे उपसमुच्चय को समाप्त करना चाहते हैं तो GROUPING ID का उपयोग करने का मामला हो सकता है। सेट, लेकिन GROUPING SET को विशिष्ट एकत्रीकरण स्तरों को निर्दिष्ट करने के लिए सटीक रूप से डिज़ाइन किया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओआरए-01618

  2. बैच फ़ाइल से SQL निष्पादित करें

  3. TNS के माध्यम से Oracle से कनेक्शन काम नहीं कर रहा है

  4. JdbcPagingItemReader स्प्रिंग बैच में सही परिणाम नहीं दे रहा है

  5. Oracle बाहरी तालिका में CSV फ़ाइल आयात करें