eficiencia
Publicado por Javier (6 intervenciones) el 27/09/2016 18:50:22
Hola, alguien que me ayude a hacer mas eficiente esta consulta? ya que hago uniones tantas veces como equipos tengo, quiero saber si hay forma de solucionarlo con un INER JOIN o alguna forma por favor.
Uso dos fechas de corte porque el corte del equipo se hace en alguna hora del día y lo acoto al corte del otro dia.
SELECT Dispositivo, COUNT ( No_Serie)as Tarjetas
FROM [Compra]
WHERE [Tipo_Transaccion] = 8 and Dispositivo=112005 and No_Serie_Tarjeta <>'0060080F00000001'
AND [Fecha_Hora] >= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160926' AND convert(Char(8),Fecha_Hora,112) <='20160926' and Dispositivo=112005 and [Total]>0.0)
AND [Fecha_Hora] <= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160927' AND convert(Char(8),Fecha_Hora,112) <='20160927' and Dispositivo=112005 and [Total]>0.0)
GROUP BY Dispositivo
UNION
SELECT Dispositivo, COUNT ( No_Serie)as Tarjetas
FROM [Compra]
WHERE [Tipo_Transaccion] = 8 and Dispositivo=112006 and No_Serie_Tarjeta <>'0060080F00000001'
AND [Fecha_Hora] >= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160926' AND convert(Char(8),Fecha_Hora,112) <='20160926' and Dispositivo=112006 and [Total]>0.0)
AND [Fecha_Hora] <= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160927' AND convert(Char(8),Fecha_Hora,112) <='20160927' and Dispositivo=112006 and [Total]>0.0)
GROUP BY Dispositivo
Uso dos fechas de corte porque el corte del equipo se hace en alguna hora del día y lo acoto al corte del otro dia.
SELECT Dispositivo, COUNT ( No_Serie)as Tarjetas
FROM [Compra]
WHERE [Tipo_Transaccion] = 8 and Dispositivo=112005 and No_Serie_Tarjeta <>'0060080F00000001'
AND [Fecha_Hora] >= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160926' AND convert(Char(8),Fecha_Hora,112) <='20160926' and Dispositivo=112005 and [Total]>0.0)
AND [Fecha_Hora] <= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160927' AND convert(Char(8),Fecha_Hora,112) <='20160927' and Dispositivo=112005 and [Total]>0.0)
GROUP BY Dispositivo
UNION
SELECT Dispositivo, COUNT ( No_Serie)as Tarjetas
FROM [Compra]
WHERE [Tipo_Transaccion] = 8 and Dispositivo=112006 and No_Serie_Tarjeta <>'0060080F00000001'
AND [Fecha_Hora] >= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160926' AND convert(Char(8),Fecha_Hora,112) <='20160926' and Dispositivo=112006 and [Total]>0.0)
AND [Fecha_Hora] <= (SELECT ([Fecha_Hora]) FROM [Cortes]
WHERE convert(Char(8),Fecha_Hora,112) >='20160927' AND convert(Char(8),Fecha_Hora,112) <='20160927' and Dispositivo=112006 and [Total]>0.0)
GROUP BY Dispositivo
Valora esta pregunta


0