SQL - if anidados o case?

 
Vista:

if anidados o case?

Publicado por Antonio (1 intervención) el 27/09/2022 17:52:20
Hola amigos, buenas tardes una ayuda tengo la siguiente query que rescata la información de una base de datos que calcula las diferencias de tiempo de una ruta que contiene Geocercas. Algunos GPS tienen defectos y estan entregando más de un registro en la diferencia entrada y salida, en resumen marca mas de una diferencia, es eso es incorrecto. Ya que solo debería ser una, ya que los vehículos ingresan solo una vez al area en cuestión. Por consiguiente todas las diferencias (entrada y salida) que tengan mas de un registro, en la misma fecha, misma patente, mismo tipo de viaje y finalmente tiempo de detención menor a cinco minutos deben ser exluidos de la query. Es mejor utilizar Case o una serie de if anidados?

aca la query principal:

SELECT [nom_zona]
,[tipo]
,[patente]
,[cliente]
,[chofer]
,[sell_patente]
,[id_device]
,[sell_tipoAccesoId]
,[TipoSelloId]
,[ColorId]
,[tipo_vehiculo]
,[data_date]
,[hdg]
,CASE
WHEN patente = LEAD(patente,1) OVER(PARTITION BY patente ORDER BY data_date ASC)
AND nom_zona = LEAD(nom_zona,1) OVER(PARTITION BY patente ORDER BY data_date ASC)
AND tipo <> LEAD(tipo,1) OVER(PARTITION BY patente ORDER BY data_date ASC)
AND DATEDIFF(HOUR, data_date, LEAD(data_date,1) OVER (PARTITION BY patente ORDER BY data_date ASC))<1
THEN DATEDIFF(MINUTE, data_date, LEAD(data_date,1) OVER (PARTITION BY patente ORDER BY data_date ASC))
END 'tiempodescanso'
,CASE
WHEN nom_zona='Zona Descanso Km 103' THEN 'Bajada'
WHEN nom_zona='Zona Descanso Km 121' THEN 'Subida'
END 'Trayecto'
FROM [dbo].[Sellos_geoDescansos]
ORDER BY patente ASC, data_date ASC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

if anidados o case?

Publicado por Jorge (7 intervenciones) el 19/10/2022 05:10:43
por principio de cuentas, en una CONSULTA SELECT una sentencia IF no se utiliza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar