You can do this sort of. The problem comes from the fact that you can (as far as I can tell) only look at the previous record within a dataset.
Using the data below:
SELECT 1 AS id ,
'2013-01-24 08:30' AS Time ,
'2013-01-24 08:32' AS Time_Stamp ,
'Available' AS State
UNION
SELECT 2 ,
'2013-01-24 08:30' ,
'2013-01-24 08:34' ,
'Busy' AS State
UNION
SELECT 3 ,
'2013-01-24 08:30' ,
'2013-01-24 08:38' ,
'Idle' AS State
UNION
SELECT 4 ,
'2013-01-24 08:30' ,
'2013-01-24 08:40' ,
'Signed out' AS State
To resolve this, create a matrix on the report as normal and sort in descending order (Signed out time comes first). Create an additional column with the following expression:
=iif(isdate(previous(max(Fields!Time_Stamp.Value))),DateDiff("n",max(Fields!Time_Stamp.Value),previous(max(Fields!Time_Stamp.Value))),0)
Results should be
idTime Time_StampStateDiffState
424/01/2013 08:3024/01/2013 08:400Signed out
324/01/2013 08:3024/01/2013 08:382Idle
224/01/2013 08:3024/01/2013 08:344Busy
124/01/2013 08:3024/01/2013 08:322Available