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

तारीखों के बीच के अंतर को भरने के लिए डुप्लीकेटिंग रिकॉर्ड

आप CONNECT BY LEVEL . का उपयोग करके एक पंक्ति जनरेटर स्टेटमेंट बना सकते हैं सिंटैक्स, क्रॉस आपकी तालिका में अलग-अलग उत्पादों के साथ जुड़ता है, और फिर बाहरी रूप से आपकी मूल्य तालिका में शामिल होता है। अंतिम स्पर्श LAST_VALUE . का उपयोग करना है फ़ंक्शन और IGNORE NULLS एक नया मान मिलने तक कीमत दोहराने के लिए, और चूंकि आप एक दृश्य चाहते थे, एक CREATE VIEW के साथ कथन:

create view dense_prices_test as
select
    dp.price_date
  , dp.product
  , last_value(pt.price ignore nulls) over (order by dp.product, dp.price_date) price
from (
      -- Cross join with the distinct product set in prices_test
      select d.price_date, p.product
      from (
            -- Row generator to list all dates from first date in prices_test to today
            with dates as (select min(price_date) beg_date, sysdate end_date from prices_test)
            select dates.beg_date + level - 1 price_date 
            from dual
            cross join dates
            connect by level <= dates.end_date - dates.beg_date + 1
            ) d
      cross join (select distinct product from prices_test) p
     ) dp
left outer join prices_test pt on pt.price_date = dp.price_date and pt.product = dp.product;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा:ऑरैकल डेटाबेस में CLOB कैसे डालें?

  2. Oracle SQL - किसी कॉलम के उच्चतम 5 मान कैसे प्राप्त करें

  3. Oracle में बूलियन फील्ड

  4. अनुक्रम से आईडी उत्पन्न करने के लिए ओरेकल ट्रिगर के साथ हाइबरनेट मुद्दा

  5. Oracle में गैर-कामकाजी घंटों को कैसे समाप्त करें