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

Dapatkan perbedaan waktu antara kelompok catatan

CTE (ekspresi tabel umum ) dapat digunakan seperti tabel suhu khusus. Ini memungkinkan Anda untuk (dalam hal ini) secara dinamis membuat nomor baris yang nantinya dapat Anda buat sendiri bergabung.

Saya pikir Anda sedang mencari sesuatu seperti ini:

--create temp table
select 19 as id,'2013-08-23 14:52' as activitytime,1 as status
into #temp
union all
select 19,'2013-08-23 14:50',1 union all
select 19,'2013-08-23 14:45',2 union all
select 19,'2013-08-23 14:35',2 union all
select 19,'2013-08-23 14:32',1 union all
select 19,'2013-08-23 14:30',1 union all
select 19,'2013-08-23 14:25',2 union all
select 19,'2013-08-23 14:22',2 union all
select 53,'2013-08-23 14:59',1 union all
select 53,'2013-08-23 14:56',1 union all
select 53,'2013-08-23 14:57',1 union all
select 53,'2013-08-23 14:52',2 union all
select 53,'2013-08-23 14:50',2 union all
select 53,'2013-08-23 14:49',2 union all
select 53,'2013-08-23 14:18',2 union all
select 53,'2013-08-23 14:30',1

--build cte table
;WITH cte
AS (
SELECT 
    *,
    ROW_NUMBER() OVER (ORDER BY  id, activitytime) AS RowNum
FROM 
    #temp
)

--query cte table, self joining row 1 to row 2 to compare.
SELECT a.id, sum(DATEDIFF(minute,b.ActivityTIme,a.ActivityTime)) as TotalTime
FROM 
 cte AS A
 LEFT OUTER JOIN cte AS B   
 ON A.RowNum = B.RowNum + 1 and a.id = b.id
where b.status = 2
group by a.id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengguna SQL Server baru gagal masuk

  2. Temukan Asosiasi Antara Akun Email Database dan Prinsipal Database di SQL Server (T-SQL)

  3. Cara membuat cadangan atau membuat tabel baru dari Tabel SQL Server yang Ada di SQL Server - Tutorial SQL Server / TSQL Bagian 105

  4. Beberapa Indeks vs Indeks Multi-Kolom

  5. Membuat koneksi dari Script Task (VB) ke OLEDB Connection Manager dari SSIS Package