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

संचयी विश्लेषणात्मक कार्यों का उपयोग करके किसी क्वेरी में शून्य-मान रिकॉर्ड जोड़ना

CURRENT ROW के बजाय आप पिछली पंक्ति तक योग करने के लिए PRECEDING कीवर्ड का उपयोग कर सकते हैं।

with data as (
  select 1 id, 'A' name, 'fruit' r_group, '2007' year, '04' month, 5 sales from dual union all
  select 2 id, 'Z' name, 'fruit' r_group, '2007' year, '04' month, 99 sales from dual union all
  select 3 id, 'A' name, 'fruit' r_group, '2008' year, '05' month, 10 sales from dual union all
  select 4 id, 'B' name, 'vegetable' r_group, '2008' year, '07' month, 20 sales from dual )
select t.*, 
  coalesce(sum(sales) over (partition by  r_group order by year, month rows between unbounded preceding and 1 preceding),0) opening,
  sum(sales) over (partition by  r_group order by year, month rows between unbounded preceding and current row) closing
from (
  select year, month, r_group, sum(sales) sales
  from data
  group by year, month, r_group
  ) t
order by 3,1,2;

year    month   r_group     sales   opening closing
---------------------------------------------------
2007    04      fruit       104     0       104
2008    05      fruit       10      104     114
2008    07      vegetable   20      0       20


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AWS और Oracle क्लाउड प्लेटफ़ॉर्म पर डेटाबेस सेवाएँ

  2. Oracle PL/SQL:PLS-00103 को हल करने में मदद करें:निम्न में से किसी एक की अपेक्षा करते समय प्रतीक LOOP का सामना करना पड़ा:यदि

  3. Oracle SQL - क्या डेटा विशेषताओं को निर्धारित करने के लिए CASE का उपयोग चेक बाधा में किया जा सकता है?

  4. फ्रोम कीवर्ड जहां उम्मीद की वहाँ पे नहीं मिला

  5. एक तारीख में महीनों को जोड़ना SQL