On Jul 18, 9:12 am, Pla...@sqlstudio.com wrote:
> Assuming you have one pair of dates per day you can pivot like this:
>
[quoted text clipped - 9 lines]
>
> Plamen Ratchevhttp://www.SQLStudio.com
Try this,
Create Table dbo.OneLine
(
StaffID Int,
[Date/Time] DateTime,
Status VarChar(3)
)
Delete From OneLine
Insert Into OneLine(StaffID,[Date/Time],Status)
Select 1234, Cast('07/16/2008 08:00' As DateTime), 'In'
Union
Select 1234, Cast('07/16/2008 17:00' As DateTime), 'Out'
Union
Select 2345, Cast('07/16/2008 08:05' As DateTime), 'In'
Union
Select 2345, Cast('07/16/2008 13:00' As DateTime), 'Out'
Union
Select 1234, Cast('07/17/2008 08:00' As DateTime), 'In'
Union
Select 1234, Cast('07/17/2008 17:00' As DateTime), 'Out'
Union
Select 2345, Cast('07/17/2008 08:05' As DateTime), 'In'
Union
Select 2345, Cast('07/17/2008 13:00' As DateTime), 'Out'
Select A.StaffID, A.[Date/Time], A.Status, B.[Date/Time], B.Status
From
(Select * From OneLine Where Status = 'In') A
Inner Join
(Select * From OneLine Where Status = 'Out') B
On A.StaffID = B.StaffID And Convert(Char(8), A.[Date/Time], 112) =
Convert(Char(8), B.[Date/Time], 112)
Rahul
Rahul - 18 Jul 2008 06:37 GMT
> On Jul 18, 9:12 am, Pla...@sqlstudio.com wrote:
>
[quoted text clipped - 49 lines]
>
> Rahul
Some improvement
Create Table dbo.OneLine
(
StaffID Int,
[Date/Time] DateTime,
Status VarChar(3)
)
Delete From OneLine
Insert Into OneLine(StaffID,[Date/Time],Status)
Select 1234, Cast('07/16/2008 08:00' As DateTime), 'In'
Union
Select 1234, Cast('07/16/2008 17:00' As DateTime), 'Out'
Union
Select 2345, Cast('07/16/2008 08:05' As DateTime), 'In'
Union
Select 2345, Cast('07/16/2008 13:00' As DateTime), 'Out'
Union
Select 1234, Cast('07/17/2008 11:00' As DateTime), 'In'
Union
Select 1234, Cast('07/18/2008 01:30' As DateTime), 'Out'
Union
Select 2345, Cast('07/17/2008 08:05' As DateTime), 'In'
Union
Select 2345, Cast('07/17/2008 13:00' As DateTime), 'Out'
Select A.StaffID, A.[Date/Time], A.Status, B.[Date/Time], B.Status
From
(Select * From OneLine Where Status = 'In') A
Inner Join
(Select * From OneLine Where Status = 'Out') B
On A.StaffID = B.StaffID
And (Convert(Char(8), A.[Date/Time], 112) = Convert(Char(8), B.[Date/
Time], 112)
Or
DateDiff(Hour,A.[Date/Time], B.[Date/Time]) Between 0 And 24)
Rahul