У меня есть следующий оператор выбора:
SELECT [TR_DATE]
,[TR_TIME]
,RIGHT('000000' + CONVERT(varchar,TR_TIME), 6)
,TIMEFROMPARTS(SUBSTRING(RIGHT('000000' + CONVERT(varchar,TR_TIME), 6),1,2), SUBSTRING(RIGHT('000000' + CONVERT(varchar,TR_TIME), 6),3,2), SUBSTRING(RIGHT('000000' + CONVERT(varchar,TR_TIME), 6),5,2),0,0) as trtime
,[ET_TYPENO]
,[ET_NAME]
FROM [DB400].[dbo].[TRANSACTIONREPORT]
where DEPT_NAME = 'GIJIMA AST HOLDINGS (PTY) LTD'
/*and LOC_NAME = 'Front Door and Gate'*/
and TR_DATE between '20200120' and '20200130'
order by TR_DATE, MST_LASTNAME, MST_FIRSTNAME, TR_TIME
, который возвращает следующие данные:
Я хотел бы используйте это, чтобы вычислить время, которое было проведено в здании.
Обратите внимание, что ET_TYPENO = 1 соответствует «Разрешенному нормальному входу», а ET_TYPENO = 2 - «Разрешенному нормальному выходу»
У меня есть следующее выражение в отчете ssrs
=iif(Fields!ET_TYPENO.Value=2,
DateDiff(DateInterval.Hour, previous(Fields!trtime.Value),Fields!trtime.Value),
"")
Но оно разрешается до следующих значений: #Error
.
ОБНОВЛЕНИЕ
Ожидаемый результат
Рассчитать разницу во времени между «Допустимым нормальным входом» событие и событие «Разрешенный нормальный выход».
Возьмем, например, строки 2 и 3. «Разрешенный нормальный выход» произошел в 07:23:19, а «Разрешенный нормальный выход» - в 08:55:48. Мне нужно, чтобы вернуть разницу во времени между этими двумя разами. IE 1: 32: 29.