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

Gabungkan duplikat catatan temporal dalam database

Coba ini jika Anda dapat memastikan bahwa semua tanggal mulai dan tanggal akhir berkelanjutan :

with  t1 as  --tag first row with 1 in a continuous time series
(
select t1.*, case when t1.column1=t2.column1 and t1.column2=t2.column2
                  then 0 else 1 end as tag
  from your_table t1
  left join your_table t2
    on t1.EmployeeId= t2.EmployeeId and dateadd(day,-1,t1.StartDate)= t2.EndDate
)
select t1.EmployeeId, t1.StartDate, 
       case when min(T2.StartDate) is null then null
            else dateadd(day,-1,min(T2.StartDate)) end as EndDate,
       t1.Column1, t1.Column2
  from (select t1.* from t1 where tag=1 ) as t1  -- to get StartDate
  left join (select t1.* from t1 where tag=1 ) as t2  -- to get a new EndDate
    on t1.EmployeeId= t2.EmployeeId and t1.StartDate < t2.StartDate
 group by t1.EmployeeId, t1.StartDate, t1.Column1,   t1.Column2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Setara terbaik untuk IsInteger di SQL Server

  2. Mendapatkan kesalahan aneh, kueri SQL Server menggunakan klausa `DENGAN`

  3. Perakitan 'Microsoft.SqlServer.Types' versi 10 atau lebih tinggi tidak dapat ditemukan

  4. TFDQuery.Prepare tidak dapat menentukan tipe parameter untuk kueri INSERT di MS SQL SERVER

  5. Bagaimana Anda mentransfer atau mengekspor data SQL Server 2005 ke Excel?