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

Temukan tanggal MIN dan MAX pada periode waktu yang terputus YYYYMM00

Ini adalah jenis masalah kesenjangan-dan-pulau. Ini dapat dipecahkan bahkan dalam perangkat lunak kuno yang tidak didukung seperti SQL Server 2005, karena versi tersebut memiliki row_number() .

Salah satu trik adalah mengubah id waktu menjadi bonafide tanggal Waktu. Trik lainnya adalah menentukan grup dengan mengurangi jumlah bulan berurutan dari nilai tanggal/waktu:

select player, team, min(timeid), max(timeid)
from (select lp.*,
             row_number() over (partition by player, team order by timeid) as seqnum,
             cast(cast(timeid + 1 as varchar(255)) as datetime) as yyyymm
      from logplayer lp
     ) lp
group by player, team, dateadd(month, - seqnum, yyyymm)
order by player, team, min(timeid);

Di sini adalah db<>biola.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengidentifikasi multi-bagian TextBox1.Text tidak dapat diikat di C# ASP.NET?

  2. Terapkan Luar Mengembalikan kolom secara tidak terduga NOT NULL saat tidak ada kecocokan

  3. Kueri untuk Mengonversi Varchar HH:MM ke Menit Bilangan Bulat di SQL Server 2008

  4. Menggunakan prosedur tersimpan di Entity Framework 5 dengan tipe kompleks?

  5. carriage return di sql server 2012