***************************************************************************
** El bloque siguiente crea la variable/tabla temporal
***************************************************************************
DECLARE @mi_tabla TABLE ( NumeroRegistro int, NumeroVehiculo nchar(5), NumeroMatricula varchar(15), RFID_Salida datetime, RFID_Entrada datetime, Serv_Ano_Creacion smallint, Serv_Codigo int, Serv_Linea int, Serv_Conductor char(5) )
***************************************************************************
** Todo el bloque siguiente inserta registros usando la estructura insert + select
***************************************************************************
INSERT INTO @mi_tabla
SELECT a.NumeroRegistro, a.NumeroVehiculo, a.NumeroMatricula,
(SELECT TOP 1 z.CUANDO
FROM Murcia.dbo.tbl_RFID_Movimientos as z
WHERE z.ANTENA LIKE '%Ant0%'
AND z.id_Vehiculo = a.NumeroRegistro
AND z.CUANDO >= '07/02/2014 0:00:00'
AND z.CUANDO <= '07/02/2014 23:59:59'
ORDER BY z.id_Vehiculo ASC, z.CUANDO DESC
) AS RFID_Salida,
(SELECT TOP 1 z.CUANDO
FROM Murcia.dbo.tbl_RFID_Movimientos as z
WHERE z.ANTENA LIKE '%Ant1%'
AND z.id_Vehiculo = a.NumeroRegistro
AND z.CUANDO >= '07/02/2014 0:00:00'
AND z.CUANDO <= '07/02/2014 23:59:59'
ORDER BY z.id_Vehiculo ASC, z.CUANDO DESC
) AS RFID_Entrada,
(SELECT TOP 1 Ano_Creacion
FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] = a.NumeroVehiculo
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
) as Serv_Ano_Creacion,
(SELECT TOP 1 Codigo
FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] = a.NumeroVehiculo
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
) as Serv_Codigo,
(SELECT TOP 1 Linea
FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] = a.NumeroVehiculo
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
) as Serv_Linea,
(SELECT TOP 1 Conductor
FROM [Murcia].[dbo].[tbl_Servicios_Montaje]
WHERE [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio] <= '07/02/2014 14:17:51' AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final] >= '07/02/2014 14:17:51'
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo] = a.NumeroVehiculo
AND [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Baja] IS NULL
ORDER BY [Murcia].[dbo].[tbl_Servicios_Montaje].[Vehiculo], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Inicio], [Murcia].[dbo].[tbl_Servicios_Montaje].[Fecha_Hora_Final]
) as Serv_Conductor
FROM [SocGer].[dbo].[tbl_Vehiculos] as a
WHERE a.[Fecha_Baja] IS NULL
AND a.[Empresa_Colaboradora] IS NULL
ORDER BY a.NumeroVehiculo ASC
***************************************************************************
** El bloque ANTERIOR creaba los registros de la variable/tabla temporal
** Las líneas siguientes lo que hacen es traerme esos registros de esa
** variable/tabla temporal pero trayendo también registros de otra tabla
** mediante el uso de LEFT JOIN
***************************************************************************
SELECT s.Descripcion,
x.*
FROM @mi_tabla as x
LEFT JOIN [Murcia].[dbo].[tbl_Servicios] as s
ON x.Serv_Ano_Creacion = s.Ano_Creacion
AND x.Serv_Codigo = s.Codigo
WHERE x.RFID_Entrada > x.RFID_Salida
OR x.RFID_Entrada = x.RFID_Salida
OR ( x.RFID_Entrada IS NULL AND x.RFID_Salida IS NULL )
ORDER BY x.NumeroVehiculo ASC