Forums Últimos mensajes - Powered by IBM
 

Descartar registros que se repiten consecutivamente

11/05/2010 - 14:14 por José Antonio Muñoz | Informe spam
Hola al grupo,

¿como puedo descartar los registros en una consulta donde el valor de uno de
los campos se repite de manera consecutiva ordenando la consulta por un
campo clave?

Ejemplo: En la consulta siguiente el registro cuyo código 3 se descarta ya
que se repite del valor anterior.

Codigo Fecha
1 12/01/2009
2 03/03/2009
3 03/03/2009
4 01/05/2009
5 03/03/2009


Nota: No me sirve la siguiente consulta ya que cuando la tabla tiene muchos
registros (sobre 200.000) tarda demasiado.

SELECT Codigo, Fecha FROM
(SELECT Codigo, Fecha, CASE WHEN (SELECT TOP 1 Fecha FROM Tabla WHERE
Codigo<xx.Codigo ORDER BY Codigo Desc)=Fecha THEN 1 ELSE 0 END As Repite
FROM Tabla As xx) As TablaInterna
WHERE Repite=0

saludos,
José Antonio
 

Leer las respuestas

#1 Gustavo Cantero \(The Wolf\)
11/05/2010 - 15:51 | Informe spam
José:
Podrías utilizar esta consulta:

SELECT MIN(Codigo), Fecha
FROM TablaInterna
GROUP BY Fecha

Suerte!

Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://foro.scientia.com.ar

De: José Antonio Muñoz [mailto:]
Expuesto a las: Martes, 11 de Mayo de 2010 09:14 a.m.
Expuesto en: microsoft.public.es.sqlserver
Conversación: Descartar registros que se repiten consecutivamente
Asunto: Descartar registros que se repiten consecutivamente

Hola al grupo,

¿como puedo descartar los registros en una consulta donde el valor de
uno de
los campos se repite de manera consecutiva ordenando la consulta por un
campo clave?

Ejemplo: En la consulta siguiente el registro cuyo código 3 se descarta
ya
que se repite del valor anterior.

Codigo Fecha
1 12/01/2009
2 03/03/2009
3 03/03/2009
4 01/05/2009
5 03/03/2009


Nota: No me sirve la siguiente consulta ya que cuando la tabla tiene
muchos
registros (sobre 200.000) tarda demasiado.

SELECT Codigo, Fecha FROM
(SELECT Codigo, Fecha, CASE WHEN (SELECT TOP 1 Fecha FROM Tabla WHERE
Codigo<xx.Codigo ORDER BY Codigo Desc)=Fecha THEN 1 ELSE 0 END As Repite

FROM Tabla As xx) As TablaInterna
WHERE Repite=0

saludos,
José Antonio

Preguntas similares