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

Oracle/Sybase SQL - पिछले रिकॉर्ड के आधार पर मूल्य प्राप्त करें (एक साधारण अंतराल नहीं)

ऐसा करने का एक तरीका नेस्टेड रैंकिंग फ़ंक्शन के साथ है। सबसे पहले, एक मान प्राप्त करने वाली हर चीज़ के लिए एक स्थिर मान असाइन करें (max() over . का उपयोग करके) ) और फिर इसे एक विभाजन के रूप में उपयोग करें।

select t.Invoice_Id, t.Invoice_Line, t.Kit_Flag, t.Part_Number,
       max(KitPart) over (partition by invoice_id, KitNum) as Parent_Part
from (select t.*,
             sum(isKit) over (partition by InvoiceId order by InvoiceLine) as KitNum
      from (select t.Invoice_Id, t.Invoice_Line, t.Kit_Flag, t.Part_Number,
                   (case when Kit_Flag = 'K' then 1 else 0 end) as IsKit,
                   (case when Kit_Flag = 'K' then Part_Number end) as KitPart
            from Invoice_Data t
           ) t
     ) t



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-04076:अमान्य नया या पुराना विनिर्देश - PL/SQL - Oracle ट्रिगर

  2. जावा से ओरेकल डीबी में डालने की तारीख

  3. क्या Oracle के पास SQL ​​​​सर्वर के तालिका चर के बराबर है?

  4. Oracle में संग्रहीत प्रक्रिया के लिए XML को पैरामीटर के रूप में कैसे पास करें?

  5. JDBC पर इस Oracle स्टेटमेंट को कैसे निष्पादित करें