SQL - Distinct para dos campos!

   
Vista:

Distinct para dos campos!

Publicado por David (7 intervenciones) el 12/05/2010 16:48:01
Buenos dias..

De antemano muchas gracias por la colaboración que me puedan brindar…..
Quisiera consultar lo siguiente:

Estoy utilizando SQL Server 2005 y tengo una tabla llamada actividad_bus que almacena datos históricos seis días atrás…
La tabla tiene los campos nombre_estacion y hora_deteccion
Al utilizar la siguiente consulta:

select distinct nombre estación
from actividad_bus
where (hora_deteccion > Convert (DATETIME, ‘2010-05-12 04:30:00’)

El resultado es indicarme el nombre de la estación sin repetirme registros después de las 04:30:00.

Lo que necesito es que la consulta me arroje tanto el nombre de la estación como la hora de detección sin repetirme registros…ya que si adiciono el campo hora_deteccion en el select, me aparece todos los registros de deteccion repitiendome el nombre de la estacion.

Muchas gracias…..
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

RE:Distinct para dos campos!

Publicado por Leonardo Josue (878 intervenciones) el 12/05/2010 17:44:01
Buenos Días David:

No estoy seguro de haber entendido lo que necesitas, tal vez sea conveniente que pongas un ejemplo los datos que contiene la tabla y qué es lo que necesitas de salida.

Si hace lo siguiente:
select distinct nombre_estacion, hora_deteccion
from actividad_bus
where (hora_deteccion > Convert (DATETIME, ‘2010-05-12 04:30:00’)

el resultado sería algo como esto:

nombre_estacion|hora_deteccion
NORTE|04:31:41
NORTE|04:39:01
NORTE|04:47:19
SUR|05:48:32
SUR|06:10:29
SUR|07:42:34

Creo que es esto a lo que te refieres cuando dices que te repite el nombre de la estación, pero lo que no entiendo es cómo necesitas que aparezca tu salida.

saludos.
Leo.
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

RE:Distinct para dos campos!

Publicado por David (7 intervenciones) el 12/05/2010 21:28:29
Leonardo, muchísimas gracias por su pronta colaboración……

Le comento…..
Si realizo esta consulta:

select distinct nombre estación
from actividad_bus
where (hora_deteccion > Convert (DATETIME, ‘2010-05-12 04:30:00’)

Me arroja lo siguiente:

Nombre estación
Aeropuerto
Batallón
Maraya
Jardín
Ucumari

Ahora, si realizo la siguiente consulta:
select distinct nombre estación, hora deteccion
from actividad_bus
where (hora_deteccion > Convert (DATETIME, ‘2010-05-12 04:30:00’)

El resultado es:
Nombre estación |Hora deteccion
Aeropuerto 05:05:00
Aeropuerto 05:05:12
Aeropuerto 05:05:35
Batallon 05:07:24
Batallon 05:07:35
Batallon 05:08:20
Maraya 05:20:24
Maraya 05:21:01
Maraya 05:22:02

Repitiendome los registros y, lo que necesito Leonardo, es que cuando realice la consulta el resultado sea:

Nombre estación |Hora deteccion
Aeropuerto 05:05:00
Batallon 05:07:24
Maraya 05:20:24

En donde la hora de detección sea la última para cada estación.
Creo que asi me puedo hacer entender mas fácil….

Muchas gracias….
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

RE:Distinct para dos campos!

Publicado por Leonardo Josue (878 intervenciones) el 13/05/2010 16:20:40
Hola de nuevo David:

Sólo una cuestión en cuanto a tu post. dices que necesitas que aparezca la última hora de detección para cada estación, pero en tu ejemplo de salida estás poniendo la primera, según yo la salida debería ser así:

Nombre estación |Hora deteccion
Aeropuerto|05:05:35
Batallon|05:08:20
Maraya|05:22:02

según yo lo puedes hacer con la siguiente consulta:

select distinct A1.nombre_estacion, A1.hora_deteccion
from actividad_bus A1
where A1.hora_deteccion > Convert (DATETIME, '2010-05-12 04:30:00')
and A1.hora_deteccion = (
select max(hora_deteccion) from actividad_bus A2 where
A2.nombre_estacion = A1.nombre_estacion and A2.hora_deteccion > Convert (DATETIME, '2010-05-12 04:30:00')
)

Saludos y espero que te sirva el código.
Leo
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

RE:Distinct para dos campos!

Publicado por David (7 intervenciones) el 13/05/2010 21:32:15
Excelente Leonardo….Funciono como lo necesitaba…..
Solo le sume que lo ordenara por el nombre de la estación y listo….

Le agradezco muchísimo……
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

RE:Distinct para dos campos!

Publicado por Héctor Montes hhmontes@utp.edu.co (1 intervención) el 11/06/2015 17:49:30
Leo, noté la respuesta que le dio a David respecto al uso del comando distinct para dos campos, pero ocurre que yo puedo ser aun más novato que David, así que te pido el favor de que si me puedes regalar un comentario al pie de la sentencia que explique porque aparecen estas nuevas referencias campos y tablas A1.nombre_estacion, A1.hora_deteccion, actividad_bus A2, actividad_bus A1. Se tratan de tablas clonadas y campos extraídos de dichas tablas clonadas?, y si es así? cómo funciona la lógica de clonación agregando estos prefijos que veo: A1, A2, y esas cosas. En realidad te agradezco porque apenas si estoy incursionando en estos asuntos de sql y aunque me gusta a veces me confunde. Gracias por tu amables aportes. Un abrazo desde Colombia
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