Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL untuk mendapatkan nilai bukan nol berikutnya di kolom

Salah satu caranya adalah dengan menggunakan 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;

Salah satu cara Anda dapat melakukan ini dengan fungsi jendela (dalam SQL Server 2012+) adalah dengan menggunakan id maksimum kumulatif, dalam urutan terbalik:

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;

Subquery mendapatkan nilai dari non-NULL . berikutnya Indo. Kueri luar kemudian menyebarkan orig nilai atas semua baris dengan id yang sama (ingat, dalam sekelompok baris dengan nextid yang sama , hanya satu yang akan memiliki non-NULL nilai untuk 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. Gabungkan banyak kolom menjadi satu, pertahankan kesamaan dan ganti perbedaan

  2. Masukkan Gambar PictureBox ke dalam database Sql Server

  3. Pandangan Logis Tanpa Emosi pada Konvensi Penamaan SQL Server

  4. Desain tabel dinamis (tabel pencarian umum), perlu kueri yang bagus untuk mendapatkan nilai

  5. Memahami Ukuran Penyimpanan 'datetime2' di SQL Server