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

शून्य मानों के लिए पिछला मान कैसे प्राप्त करें

चूंकि आप SQL सर्वर 2012 पर हैं... यहां एक संस्करण है जो इसका उपयोग करता है। यह अन्य समाधानों की तुलना में तेज़ हो सकता है लेकिन आपको अपने डेटा पर इसका परीक्षण करना होगा।

sum() over() Id . द्वारा आदेशित एक रनिंग योग करेगा 1 जोड़ना जब कॉलम में कोई मान होता है और null . के लिए वर्तमान मान रखते हैं मूल्य। परिकलित रनिंग योग का उपयोग परिणाम को first_value() over() . में विभाजित करने के लिए किया जाता है . Id . द्वारा क्रमित पहला मान रनिंग योग द्वारा उत्पन्न पंक्तियों के प्रत्येक "समूह" के लिए वह मान है जो आप चाहते हैं।

select T.Id,
       first_value(T.FeeModeId) 
          over(partition by T.NF 
               order by T.Id 
               rows between unbounded preceding and current row) as FeeModeId,
       first_value(T.Name)      
          over(partition by T.NS 
               order by T.Id 
               rows between unbounded preceding and current row) as Name,
       T.Amount
from (
     select Id,
            FeeModeId,
            Name,
            Amount,
            sum(case when FeeModeId is null then 0 else 1 end) 
              over(order by Id) as NF,
            sum(case when Name is null then 0 else 1 end) 
              over(order by Id) as NS
     from YourTable
     ) as T

SQL Fiddle

कुछ ऐसा जो SQL Server 2012 से पहले काम करेगा:

select T1.Id,
       T3.FeeModeId,
       T2.Name,
       T1.Amount
from YourTable as T1
  outer apply (select top(1) Name
               from YourTable as T2
               where T1.Id >= T2.Id and
                     T2.Name is not null
               order by T2.Id desc) as T2
  outer apply (select top(1) FeeModeId
               from YourTable as T3
               where T1.Id >= T3.Id and
                     T3.FeeModeId is not null
               order by T3.Id desc) as T3

SQL Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP और Linux के माध्यम से pdo का उपयोग करके mssql से कैसे कनेक्ट करें?

  2. मैं SQL सर्वर डेटाबेस में auto_increment प्राथमिक कुंजी कैसे जोड़ूं?

  3. SQL सर्वर (T-SQL) में डेटाबेस मेल खाता हटाएं

  4. SQL सर्वर तालिका से यादृच्छिक पंक्तियाँ कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 117

  5. OPENJSON, JSON_QUERY, और JSON_VALUE (SQL सर्वर) का उपयोग करते समय विशेष वर्ण वाली JSON कुंजियों का संदर्भ कैसे दें