SQL - Seleccionar el registro ocurrido el último

 
Vista:

Seleccionar el registro ocurrido el último

Publicado por Decopas (7 intervenciones) el 27/02/2007 10:21:12
hola..tengo una tabla que tiene una columna de hora, y me gustaría únicamente seleccionar la que ha ocurrido la última.

Este es el contenido:

Source TimeLast DateLast Severity ProbableCause
---------- ----------------- -------------- ----------- ----------------------
5HCW 13:07:23.000 2/21/2007 !MINOR User Input 8;
5HCW 13:12:05.000 2/21/2007 !MINOR User Input 8;
5HCW 13:22:52.000 2/21/2007 !MINOR User Input 8;
5HCW 16:26:07.000 2/21/2007 !MINOR User Input 8;

Y esta es la consulta que tengo hasta el momento:
SELECT DISTINCT Source AS TermId, TimeLast AS TIME, DateLast AS DATE, Severity AS Severity, ProbableCause AS ProbableCause
FROM ALARMS
WHERE (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%'

Alguna idea?..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:Seleccionar el registro ocurrido el último

Publicado por Isaías (5072 intervenciones) el 27/02/2007 18:35:01
AND TimeLast = (SELECT MAX(TimeLast) FROM ALARMS
WHERE (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%' )
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:Seleccionar el registro ocurrido el último

Publicado por Decopas (7 intervenciones) el 27/02/2007 21:02:07
Lo primero..muchas gracias por contestar...pero..me tienes que disculpar porque no estoy muy suelta en esto del sql y no entiendo la consulta...bueno, mejor dicho el primer AND...

Sería así?

SELECT Source AS TermId, TimeLast AS TIME, DateLast AS DATE, Severity AS Severity, ProbableCause AS ProbableCause
FROM ALARMS
WHERE TimeLast = (SELECT MAX(TimeLast) FROM ALARMS
WHERE (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%' )
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:Seleccionar el registro ocurrido el último

Publicado por Isaías (5072 intervenciones) el 27/02/2007 22:06:34
Deberia funcionar:

SELECT Source AS TermId, TimeLast AS TIME, DateLast AS DATE, Severity AS Severity, ProbableCause AS ProbableCause
FROM ALARMS
WHERE TimeLast = (SELECT MAX(TimeLast) FROM ALARMS
(AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%')
AND (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%'
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:Seleccionar el registro ocurrido el último

Publicado por Decopas (7 intervenciones) el 28/02/2007 10:37:40
Gracias Isaías...la consulta que me apuntaste funciona muy bien..aunque no me da el resultado que esperaba..me explico..La tabla podría tener las siguientes entradas:

Source TimeLast DateLast Severity ProbableCause
---------- ----------------- -------------- ----------- ----------------------
5HCW 13:07:23.000 2/21/2007 !MINOR User Input 8;
5HCW 13:12:05.000 2/21/2007 !MINOR User Input 8;
5HCW 13:22:52.000 2/21/2007 !MINOR User Input 8;
5HCW 16:26:07.000 2/21/2007 !MINOR User Input 8;
M5B4 13:22:52.000 2/21/2007 !MINOR User Input 8;
M5B4 17:32:52.000 2/21/2007 !MINOR User Input 1; User Input 3;
M5B4 18:52:52.000 2/21/2007 !MINOR User Input 5;

Y lo que quiero es quedarme únicamente con:

Source TimeLast DateLast Severity ProbableCause
---------- ----------------- -------------- ----------- ----------------------
5HCW 16:26:07.000 2/21/2007 !MINOR User Input 8;
M5B4 18:52:52.000 2/21/2007 !MINOR User Input 5;

es decir, las ocurridas las últimas. Modificando un poco tu consulta:

SELECT Source AS TermId, TimeLast AS TIME, DateLast AS DATE, Severity AS Severity, ProbableCause AS ProbableCause
FROM ALARMS
WHERE DateLast = (SELECT MAX(DateLast) FROM ALARMS
(AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%')
AND (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%'

Me muestra los registros ocurridos el último día, pero ahora como podría seleccionar por cada Source la que ha ocurrido la última...

Mil gracias por tu ayuda y tu paciencia..:-)
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:Seleccionar el registro ocurrido el último

Publicado por Isaías (5072 intervenciones) el 28/02/2007 18:21:21
Intenta desde la primera posta, colocar ejemplos de lo que esperas como salida.

SELECT Source AS TermId, TimeLast AS TIME, MAX(DateLast) AS DATE, Severity AS Severity, ProbableCause AS ProbableCause
FROM ALARMS
WHERE (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%'
GROUP BY TermId, TimeLast, Severity, ProbableCause
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:Seleccionar el registro ocurrido el último

Publicado por Decopas (7 intervenciones) el 01/03/2007 13:07:20
Perdon...es que no estoy acostumbrada a esto de los foros y no me explique bien...

De nuevo gracias por la consulta pero...me siguen apareciendo varios registros por entrada de "Source"...He modificado la consulta poniendo un MAX(TimeLast), pero aunque salen menos registros, aun me aparecen registros con la misma Source. Esta es la consulta:

SELECT Source AS TermId, MAX(TimeLast) AS TIME, MAX(DateLast) AS DATE, Severity AS Severity, ProbableCause AS ProbableCause
FROM ALARMS
WHERE (AoType = 'SAU') AND
(Severity = '!CRIT.' OR
Severity = '!MAJOR' OR
Severity = '!MINOR' OR
Severity = 'WARN.') AND
(Subnetwork <> ' SUB0002SUB0001 ') AND ProbableCause like 'U%'
GROUP BY TermId, Severity, ProbableCause
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:Seleccionar el registro ocurrido el último

Publicado por Isaías (5072 intervenciones) el 01/03/2007 20:19:24
Te debe dar LA MAXIMA TimeLast, agrupado por TermId, Severity, ProbableCause

¿Es correcto?
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:Seleccionar el registro ocurrido el último

Publicado por Decopas (7 intervenciones) el 05/03/2007 11:25:46
Hola...pues tras ejecutar la consulta con el MAX(TImeLast) y con el MAX(DateLast) el resultado es:

4CAQ 20:01:51.000 3/3/2007 !MINOR User Input 8;
5HCW 09:35:19.000 3/5/2007 !CRIT. User Input 2;User Input 6;User Input 8;U
5HCW 09:38:44.000 3/5/2007 !CRIT. User Input 2;User Input 6;User Input 9;U
5HCW 10:18:14.000 3/5/2007 !CRIT. User Input 2;User Input 8;User Input 9;U
5HCW 09:33:42.000 3/5/2007 !MAJOR User Input 9;
5HCW 10:32:04.000 3/5/2007 !MAJOR User Input 9;User Input 10;
5HCW 19:13:34.000 3/4/2007 !MINOR User Input 8;
7U5O 19:03:46.000 3/4/2007 !MINOR User Input 8;
7U7Q 19:12:39.000 3/4/2007 !MINOR User Input 8;
8F5O 19:26:37.000 3/4/2007 !MINOR User Input 8;
MYV1 19:21:56.000 3/4/2007 !MINOR User Input 8;

No entiendo porque aparece tantas veces "5HCW", cuando debería salir únicamente:

4CAQ 20:01:51.000 3/3/2007 !MINOR User Input 8;
5HCW 19:13:34.000 3/4/2007 !MINOR User Input 8;
7U5O 19:03:46.000 3/4/2007 !MINOR User Input 8;
7U7Q 19:12:39.000 3/4/2007 !MINOR User Input 8;
8F5O 19:26:37.000 3/4/2007 !MINOR User Input 8;
MYV1 19:21:56.000 3/4/2007 !MINOR User Input 8;
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