Hola de nuevo mksp:
Te aseguro que "llorando" no vas a resolver tu problema, así es que evita post como el último que pones.
Dices que eres principiante, así es que lo primero que debiste hacer es leer algún manual para principiantes, la parte de las funciones y procedimientos almacenados en SQL Server y cualquier DBMS de permite desarrollar consultas muy complejas, algo que difícilmente podrás hacer con un simple SELECT.
Segundo, NUNCA ESPERES que aquí se te de la respuesta a tus tareas o trabajos y mucho menos que con un simple copiar y pegar obtengas la respuesta. La mayoría de las veces tendrás que hacer algún tipo de adecuación para que se adapte al 100% a tu realidad.
Tercero, lo que te publiqué en los dos primeros post's es prácticamente la respuesta a tu pregunta, me pregunto si al menos te tomaste un minuto para analizar y tratar de implementar la solución. Espero sinceramente que así haya sido. Ojo para la siguiente.
Ahora bien, volviendo con tu problema... Te comentaba que la parte más "compleja" podría ser la parte de convertir el smallint a datetime mediante una función, como dices ser principiante sería más o menos así:
Código SQL:
Ver originalCREATE FUNCTION dbo.f_smallint_a_datetime
(
@fecha_smalltime SMALLINT
)
RETURNS datetime
AS
BEGIN
DECLARE @fecha_datetime datetime
DECLARE @fecha_varchar VARCHAR(4)
--Para rellenar a la izquierda con ceros
SET @fecha_varchar = RIGHT('0000' + CAST(@fecha_smalltime AS VARCHAR(4)), 4)
--Para convertir la cadena a datetime
SET @fecha_datetime = CONVERT(datetime, LEFT(@fecha_varchar, 2) + ':' + RIGHT(@fecha_varchar,2), 108)
RETURN @fecha_datetime
END
Observa que el set @fecha_varchar y el set @fecha_datetime SON LAS MISMAS INTRUCCIONES QUE PUSE EN EL PRIMER POST, sólo cambiando el nombre de las variables.
Para ejecutarla sería así
Código SQL:
Ver originalSELECT dbo.smallint_a_datetime(40);
/*
fecha
-----------------------
1900-01-01 00:40:00.000
*/
Ahora bien, SÓLO FALTARIA HACER EL CÁLCULO, invocando a esta función para los tres campos:
Código:
SELECT
convert(varchar, aquí invocas la función, 108) u_timeviaje,
...
convert(varchar, (aquí invocas la función+(u_horafinaten-u_horalleg)), 108) tiempoactividad
FROM TuTabla
Haz el intento por obtener la consulta por tu propia cuenta, con todos los elementos que tienes podrás hacerlo, pero si continuas con problemas comenta en el post qué es lo que haz hecho, seguramente será poco lo que habrá que corregir.
Saludos
Leo.