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

कॉलम में अगला शून्य मान प्राप्त करने के लिए SQL

एक तरीका है outer apply . का उपयोग करना :

select t.*, t2.orig as newval
from @t t outer apply
     (select top 1 t2.*
      from @t t2
      where t2.id >= t.id and t2.orig is not null
      order by t2.id
     ) t2;

विंडो फ़ंक्शंस (SQL Server 2012+ में) के साथ ऐसा करने का एक तरीका यह है कि आईडी पर एक संचयी अधिकतम का उपयोग व्युत्क्रम क्रम में किया जाए:

select t.*, max(orig) over (partition by nextid) as newval
from (select t.*,
             min(case when orig is not null then id end) over (order by id desc) as nextid
      from @t
     ) t;

सबक्वेरी को अगले गैर-NULL . का मान मिलता है पहचान। बाहरी क्वेरी तब orig . फैलती है समान आईडी वाली सभी पंक्तियों पर मान (याद रखें, समान nextid वाली पंक्तियों के समूह में , केवल एक के पास एक गैर-NULL होगा orig . के लिए मान )।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर तालिका नाम मान्य करने के लिए नियमित अभिव्यक्ति

  2. SQL सर्वर 2008 एक्सप्रेस डेटाबेस पर सभी प्रश्नों को लॉग करना?

  3. SQL सर्वर डेटाबेस आकार का चयन करें

  4. DATETIMEFROMPARTS () SQL सर्वर में उदाहरण (T-SQL)

  5. FOR XML के परिणाम में एन्कोडिंग जानकारी जोड़ना