我需要计算工人协助的EntryHourSchedule(理想时间)和EntryHourRegistered(实时)之间的差,但是两者都在2个不同的表中:ScheduleDetail(带Schedule的*到1)和注册表。
我使用
datediff(second, start_date, end_date) / 3600.0和下一个tables进行计算。
就像这样:
SELECT I.IdTrabajador, I.Fecha
, Datediff(second
, I.HoraInicioRefrigerio
, (SELECT HD.HoraInicioRefrigerio
FROM [rrhh].TrabajadorHorarioDetalle HD INNER JOIN [rrhh].TrabajadorHorario H
ON HD.IdTrabajadorHorario = H.IdTrabajadorHorario
WHERE H.Estado = 1 AND HD.Estado = 1 AND HD.Dia = (SELECT Datename(dw, I.Fecha))
)
) / 3600.0 as Cantidad
, 0.00 as Costo
FROM [rrhh].TrabajadorIncidencia I
但是导致错误:子查询返回了多个值,当它在=,之后时是不正确的! =,<,<=,>,> =或当它用作表达式时。
最后,应该显示它,例如:IdTrabajador: 1 | Fecha: '2019-01-29' | Cantidad: 1.5
谢谢。
答案 0 :(得分:0)
您在子查询中错过了IdTrabajador上的链接:
SELECT I.IdTrabajador, I.Fecha
, Datediff(second
, I.HoraInicioRefrigerio
, (SELECT HD.HoraInicioRefrigerio
FROM [rrhh].TrabajadorHorarioDetalle HD INNER JOIN [rrhh].TrabajadorHorario H
ON HD.IdTrabajadorHorario = H.IdTrabajadorHorario
WHERE H.Estado = 1 AND HD.Estado = 1 AND HD.IdTrabajador = I.IdTrabajador AND HD.Dia = (SELECT Datename(dw, I.Fecha))
)
) / 3600.0 as Cantidad
, 0.00 as Costo
FROM [rrhh].TrabajadorIncidencia I