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

SQL स्वचालित रूप से अनुपलब्ध दिनांक और मूल्य तालिका में अनुपलब्ध दिनांक के लिए तुरंत पिछली तिथि से उत्पन्न करने के लिए

मैंने your_table का उपयोग outerjoin . के साथ एक तालिका के रूप में किया है , जैसा प्रयोग किया गया last_value पिछला डेटा डालने के लिए, इस पर एक नज़र डालें :)

SELECT last_value(m.data ignore nulls) over (order by n.mydate) data,
     n.mydate
FROM
     (SELECT DATA, mydate FROM your_table
     ) m,
     (SELECT TRUNC(SYSDATE, 'MM')-1+LEVEL mydate FROM dual CONNECT BY LEVEL <= 30
     )n
WHERE m.mydate(+) = n.mydate
ORDER BY n.mydate;

यहां फिडल करें

आप lag() . का उपयोग कर सकते हैं कार्य भी करता है, लेकिन यह डेटा नहीं भरेगा यदि दिनांक अंतराल एक से अधिक है।, यह केवल तत्काल पिछले डेटा को भरता है,

nvl(m.data, lag(m.data)over(order by n.mydate))

-संपादन -

आपके डेटा के लिए:

SELECT n.mydate VALUE_DATE,
     last_value(m.STK_EXCH IGNORE NULLS) OVER (ORDER BY n.mydate) STK_EXCH,
     last_value(m.SECURITY IGNORE NULLS) OVER (ORDER BY n.mydate) SECURITY,
     last_value(m.mkt_price IGNORE NULLS) OVER (ORDER BY n.mydate) MKT_PRICE
FROM
     (SELECT VALUE_DATE, STK_EXCH, SECURITY, MKT_PRICE FROM MKT
     ) m,
     (SELECT TRUNC(SYSDATE, 'MM')-1+LEVEL mydate FROM dual CONNECT BY LEVEL <= 30
     )n
WHERE TRUNC(m.VALUE_DATE(+)) = TRUNC(n.mydate)
ORDER BY n.mydate;

या थोड़ा और विशिष्ट:नीचे उपयोग करें:

SELECT full_date,
     NVL(stk_exch,last_value(stk_exch IGNORE NULLS)OVER(ORDER BY full_date))stk_exch,
     NVL(security,last_value(security IGNORE NULLS)OVER(ORDER BY full_date))security,
     NVL(mkt_price,last_value(mkt_price IGNORE NULLS)OVER(ORDER BY full_date))mkt_price
FROM
     (SELECT TRUNC(m.vd,'MM')-1+LEVEL FULL_DATE
     FROM
          (SELECT MIN(VALUE_DATE) vd FROM mkt
          WHERE TO_CHAR( value_date, 'MM/YYYY') = TO_CHAR(sysdate-12,'MM/YYYY') -- this line may vary to your requirement
          ) m
     CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(M.VD), 'DD')
     )first_q,
     ( SELECT value_date, stk_exch, SECURITY, mkt_price FROM mkt
     )r
WHERE first_q.full_date = TRUNC(r.value_date(+))
ORDER BY full_date;

फिडल यहां देखें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएलएसक्यूएल जेडीबीसी:अंतिम पंक्ति आईडी कैसे प्राप्त करें?

  2. एक ही चयन में कॉलम उपनाम का प्रयोग करें

  3. मैं ओरेकल के अद्यतन प्रतीक्षा 10 वाक्यविन्यास उत्पन्न करने के लिए हाइबरनेट कैसे प्राप्त करूं?

  4. किसी अन्य स्कीमा थ्रो से तालिका के साथ संग्रहीत कार्यविधि बनाएं PLS-00201

  5. स्वचालित रूप से डेटा निकालना - Oracle SQL डेवलपर