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

Bagaimana cara memilih hanya pengguna gesek dari tabel yang memiliki semua catatan gesek?

Saya pikir Anda menginginkan logika seperti berikut, di mana Anda memeriksa apakah ada catatan penutup untuk setiap catatan pembukaan. Namun sepertinya tidak mungkin untuk mendapatkan hasil yang Anda harapkan menggunakan data yang diberikan.

DECLARE @emp_swipe_rec table (EMPLOYEE_ID int, TASK_ID int, SWIPE_TYPE char(1), SWIPE_IN_OUT_TIME datetime2);

DECLARE @Now datetime2 = '2021-03-07 16:40:00.000'; --sysdatetime();

INSERT INTO @emp_swipe_rec (EMPLOYEE_ID, TASK_ID, SWIPE_TYPE, SWIPE_IN_OUT_TIME)
VALUES
(1,1,'I','2021-03-07 08:00:00.000'),
(2,2,'I','2021-03-07 08:00:00.000'),
(1,1,'O','2021-03-07 15:00:00.000'),
(1,3,'I','2021-03-07 16:00:00.000');

SELECT I.EMPLOYEE_ID, I.TASK_ID
  , DATEDIFF(MINUTE, I.SWIPE_IN_OUT_TIME, @Now) AS TimeSpent
FROM @emp_swipe_rec I
WHERE SWIPE_TYPE = 'I'
-- Rule out any where a closing record in the future exists
AND NOT EXISTS (
  SELECT 1
  FROM @emp_swipe_rec O
  WHERE O.EMPLOYEE_ID = I.EMPLOYEE_ID
  AND O.TASK_ID = I.TASK_ID
  AND SWIPE_TYPE = 'O'
  AND O.SWIPE_IN_OUT_TIME > I.SWIPE_IN_OUT_TIME
);

Mengembalikan yang berikut menggunakan stempel waktu yang memberikan 40 menit - tetapi tidak yakin bagaimana Anda mendapatkan 130 menit:

ID_KARYAWAN TASK_ID Waktu yang Dihabiskan
2 2 520
1 3 40

Harap diperhatikan untuk referensi di masa mendatang, jika Anda memberikan contoh data dengan cara ini (DDL+DML), Anda tidak hanya membuat pertanyaan Anda lebih jelas, tetapi juga memudahkan orang untuk menjawab




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melacak jumlah perubahan yang terjadi dalam kolom? T-SQL - SQL Server

  2. Bagaimana cara menghapus namespace yang berlebihan dalam kueri bersarang saat menggunakan FOR XML PATH

  3. Tanggal/waktu catatan MSSQL hapus otomatis

  4. Bagaimana timestamp2 SQL Server seharusnya bekerja di JDBC?

  5. File CSV membagi data baris saya menjadi baris terpisah