Ver Mensaje Individual
  #4  
Antiguo 07-02-2014
socger socger is offline
Miembro
 
Registrado: jun 2004
Posts: 89
Reputación: 20
socger Va por buen camino
mejor aclaracion de la SQL

Perdón esto es lo que le faltaba al post anterior para ver la aclaración de la SQL

Código SQL [-]
***************************************************************************
** 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
Responder Con Cita