Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Обобщете колоната за време с помощта на sql заявка

SQL Fiddle

Настройка на схемата на MS SQL Server 2008 :

CREATE TABLE Table2 ([repID] int, [ClockIn] datetime, [ClockOut] datetime, [TotalHours] varchar(7));INSERT INTO Table2 ([repID], [ClockIn], [ClockOut], [Общо часове]) СТОЙНОСТИ (109145, '7:50:50 AM', '3:37:16 PM', '7:46:26'), (109145, '7:52:41 AM', '3:44:51 PM', '7:52:10'), (109145, '8:42:40 AM', '3:46:29 PM', '7:3:49'), (109145, '7 :50:52 сутринта', '3:42:59 следобед', '7:52:7'), (109145, '8:09:23 сутринта', '3:36:55 следобед', '7:27 :32'); 

Заявка 1 :

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0), 108)from Table2group by repID 

Резултати :

<предварителен код>| КОЛОНА_0 |------------| 14:02:04 |

Заявка 2 :

изберете sum(datediff(second,ClockIn,ClockOut))/3600 като hours_workedfrom Table2 

Резултати :

<предварителен код>| отработени_часове|------------| 38 |

Заявка 3 :

изберете sum(datediff(minute, 0, TotalHours)) / 60.0 като hours_workedfrom Table2 

Резултати :

<предварителен код>| HOURS_WORKED |----------------| 38 |

Тук последното запитване беше взето от отговора на FreeLancers, тъй като исках да разбера дали работи или не.

Тук първо трябва да преобразувате разликата между датата и часа в секунда или минута и след това да преобразувате това време обратно в час.

Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server обгръща ли Select...Insert Queries в имплицитна транзакция?

  2. Ограничаване на рекурсията до определено ниво - Дублиране на редове

  3. Актуализиране на пощенски акаунт в база данни в SQL Server (T-SQL)

  4. SQL:Замяна на част от колона на множество редове въз основа на втора таблица

  5. Промяна на домейна на SQL server 2008