[dba-SQLServer] Sum of elapsed time blocks

Mark A Matte markamatte at hotmail.com
Mon Sep 22 12:58:57 CDT 2008


Steve,

I think this will get you to having your times in a single record...I'm sure you can do the math from here.  This does NOT test for missed punches/times...or whatever you are calling them.

Hope it helps...Mark A. Matte

SELECT MT.AgentID, MT.DTTM, MT.Direction, (SELECT Min(SM.DTTM) AS MinOfDTTM
FROM tblTimes AS SM
WHERE (((SM.AgentID)=MT.AgentID) AND ((SM.Direction)="out"))
and (((SM.DTTM)>MT.DTTM));) AS Expr1
FROM tblTimes AS MT
WHERE (((MT.Direction)="in"));


> From: stuart at lexacorp.com.pg
> To: dba-sqlserver at databaseadvisors.com
> Date: Tue, 23 Sep 2008 03:00:13 +1000
> Subject: Re: [dba-SQLServer] Sum of elapsed time blocks
>
> Trouble is nost commercial time recording devices and systems log and store single
> "events" not visits.
>
>
> I think I've still got something like this stored away somewhere in Access ( it imported a text
> file
> which was dumped by just such a commercial system. I'll try to locate it.
>
> On 22 Sep 2008 at 13:29, Arthur Fuller wrote:
>
>> As Steve suggests, a cursor appears to be the way out of this, but I believe
>> that this is because the model is wrong. In-to-out ought to be on one row
>> not two. Then the problem erases itself. This approach might require some
>> additional logic but in general, IMO, it is sound:
>>
>> Location1: In = 9:00am
>> Location2: In = not permitted before Location1.Out is not null
>> Location2: In>= Location1.Out
>>
>> My gut instinct tells me that it is a bad idea to store In and Out on
>> separate rows. The concept ought to be rethought as a
>> "Visit" which has an In time and an Out time.Then everything you need to
>> know is on one single row and it's easy to grab and the duration is a cinch
>> to calculate.
>>
>> Just my $0.02
>>
>> Arthur
>>
>> On Mon, Sep 22, 2008 at 12:08 PM, Steve Erbach  wrote:
>>
>>> Are we talking about using a SQL Cursor here?
>>>
>>> Steve Erbach
>>> Neenah, WI
>>>
>>> On Mon, Sep 22, 2008 at 9:33 AM, Steve Erbach  wrote:
>>>> Dear Group,
>>>>
>>>> I wrote an upgrade to the classic ASP In/Out board my company uses in
>>>> ASP.NET . The security cards we all have allow us
>>> access to the
>>>> building and the In/Out times are recorded in a SQL table.
>>>>
>>>> I wonder if you could help me visualize a query that would total up
>>>> the elapsed time IN for an employee over a defined period of time,
>>>> say, from Monday at 12:01 AM to now.
>>>>
>>>> The table, AccessEvents, contains these main fields:
>>>>
>>>> EmployeeID
>>>> TimeStamp
>>>> AreaCode
>>>>
>>>> The AreaCode contains either the area of the building that the
>>>> employee entered upon coming in, or the "outside", meaning that the
>>>> employee is out of the building.
>>>>
>>>> Say that it's Thursday and the employee's AccessEvents records look
>>>> like the following (I've changed the AreaCode to In or Out for
>>>> simplicity):
>>>>
>>>> 337 2008-09-15 07:54:50.000 In
>>>> 337 2008-09-15 11:59:56.000 Out
>>>> 337 2008-09-15 12:38:24.000 In
>>>> 337 2008-09-15 17:01:24.000 Out
>>>> 337 2008-09-16 07:53:16.000 In
>>>> 337 2008-09-16 11:58:00.000 Out
>>>> 337 2008-09-16 12:33:35.000 In
>>>> 337 2008-09-16 17:03:29.000 Out
>>>> 337 2008-09-17 07:56:29.000 In
>>>> 337 2008-09-17 11:59:14.000 Out
>>>> 337 2008-09-17 12:49:41.000 In
>>>> 337 2008-09-17 17:02:41.000 Out
>>>> 337 2008-09-18 08:04:17.000 In
>>>>
>>>> ...and the employee wants to know how much time he's spent in the
>>>> building up to now, which is, say, 10:00AM on Thursday the 18th of
>>>> Sept. It's easy enough to select these records, but I'm having
>>>> trouble visualizing how to sum the elapsed time spent IN the building,
>>>> including the time from his last In event to 10:00.
>>>>
>>>> Any ideas?
>>>>
>>>> Regards,
>>>>
>>>> Steve Erbach
>>>> Neenah, WI
>>> _______________________________________________
>>> dba-SQLServer mailing list
>>> dba-SQLServer at databaseadvisors.com
>>> http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
>>> http://www.databaseadvisors.com
>>>
>>>
>> _______________________________________________
>> dba-SQLServer mailing list
>> dba-SQLServer at databaseadvisors.com
>> http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
>> http://www.databaseadvisors.com
>>
>
>
> _______________________________________________
> dba-SQLServer mailing list
> dba-SQLServer at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
> http://www.databaseadvisors.com
>

_________________________________________________________________
Get more out of the Web. Learn 10 hidden secrets of Windows Live.
http://windowslive.com/connect/post/jamiethomson.spaces.live.com-Blog-cns!550F681DAD532637!5295.entry?ocid=TXT_TAGLM_WL_domore_092008



More information about the dba-SQLServer mailing list