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

ओरेकल एसक्यूएल:लापता तिथियां भरें

आप 30 दिन की अवधि SYSDATE . से प्राप्त कर सकते हैं निम्नानुसार है (मुझे लगता है कि आप SYSDATE शामिल करना चाहते हैं) ?):

WITH mydates AS (
    SELECT TRUNC(SYSDATE) - 1 + LEVEL AS due_date FROM dual
   CONNECT BY LEVEL <= 31
)

फिर उपरोक्त का उपयोग LEFT JOIN करने के लिए करें आपकी क्वेरी के साथ (शायद एक सीटीई में भी अपनी क्वेरी डालने का बुरा विचार नहीं है):

WITH mydates AS (
    SELECT TRUNC(SYSDATE) - 1 + LEVEL AS due_date FROM dual
   CONNECT BY LEVEL <= 31
), myorders AS (
    select 
    (case when trunc(so.revised_due_date) <= trunc(sysdate) 
        then trunc(sysdate) else trunc(so.revised_due_date) end) due_date, 
    (case 
        when (case when sp.pr_typ in ('VV','VD') then 'DVD' when sp.pr_typ in ('RD','CD') 
        then 'CD' end) = 'CD' 
        and  (case when so.tec_criteria in ('PI','MC') 
        then 'XX' else so.tec_criteria end) = 'OF'
        then sum(so.revised_qty_due)
    end) CD_OF_VOLUME
    from shop_order so
    left join scm_prodtyp sp
    on so.prodtyp = sp.prodtyp
    where so.order_type = 'MD' 
    and so.plant = 'W' 
    and so.status_code between '4' and '8' 
    and trunc(so.revised_due_date) <= trunc(sysdate)+30
    group by trunc(so.revised_due_date), so.tec_criteria, sp.pr_typ
    order by trunc(so.revised_due_date)
)
SELECT mydates.due_date, myorders.cd_of_volume
  FROM mydates LEFT JOIN myorders
    ON mydates.due_date = myorders.due_date;

यदि आप NULL . के बजाय "लापता" तिथियों पर शून्य दिखाना चाहते हैं , COALESCE(myorders.cd_of_volume, 0) AS cd_of_volume का उपयोग करें ऊपर।



  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. पीएल/एसक्यूएल में दो आयामी सरणी बनाना या अनुकरण करना

  4. DLL "OraOps10.dll" लोड करने में असमर्थ

  5. लिस्टुनैग फ़ंक्शन?