Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Mostrar resultados filtrados por columna repetida

Estas en el tema de Mostrar resultados filtrados por columna repetida en el foro de SQL Server en Foros del Web. Buenas tardes. Tengo una tabla del tipo siguiente: Tipo | Codigo | Cliente | Fecha PI 32767 768 11/09/2012 CA 32766 768 05/08/2012 PI 32767 ...
  #1 (permalink)  
Antiguo 03/09/2012, 09:17
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Pregunta Mostrar resultados filtrados por columna repetida

Buenas tardes.

Tengo una tabla del tipo siguiente:

Tipo | Codigo | Cliente | Fecha
PI 32767 768 11/09/2012
CA 32766 768 05/08/2012
PI 32767 1345 14/01/2011
AP 32764 2411 11/05/2012
PI 32763 2411 30/08/2012

Y mediante una sentencia deseo filtrar esos datos para que sí la fila Cliente esta repetida solo se muestre un solo registro y este sea el que tenga la fecha mayor como expongo a continuación:

Tipo | Codigo | Cliente | Fecha
PI 32767 768 11/09/2012
PI 32767 1345 14/01/2011
PI 32763 2411 30/08/2012


Gracias a todos y espero haber sido claro con mi cuestión.

Un saludo

PD: Los colores solo son para identificar correctamente los datos de las columnas.
  #2 (permalink)  
Antiguo 03/09/2012, 10:14
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Mostrar resultados filtrados por columna repetida

Código SQL:
Ver original
  1. SELECT Cliente,
  2.     MAX(Fecha) Fecha
  3. FROM    MiTabla
  4. GROUP BY Cliente;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 03/09/2012, 10:27
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Mostrar resultados filtrados por columna repetida

Hola GeriReshef y gracias.

Tu consulta es lo que necesito. Pero me topo con otro inconveniente y es que deseo que el el SELECT aparezcan varios campos más, solo mostrarlos. Para ello tambien debo incluirlos en el Group By?


ejemplo:

Código:
SELECT Cliente, Max(Fecha) Fecha, Campo1, Campo2, Campo3
FROM    MiTabla
GROUP BY Cliente,campo1,campo2,campo3;
Graciass!!
  #4 (permalink)  
Antiguo 03/09/2012, 11:28
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Mostrar resultados filtrados por columna repetida

Puedes cambiar el Campo1 en
Código SQL:
Ver original
  1. MAX(Campo1) Campo1
para obtener el maximo o en Min para el minimo, o si se trata de columna numerica tambien Sum para la suma o Avg para el promedio.

Todas la columnas en la clausula Select que no aparecen en la clausula Group By deben tener tal función de agregado.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #5 (permalink)  
Antiguo 04/09/2012, 01:20
 
Fecha de Ingreso: septiembre-2011
Mensajes: 116
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: Mostrar resultados filtrados por columna repetida

Hola ya averigue como sacar la sentencia deseada. Anidando una sentencia dentro de otra.

Ejemplo

Cita:
SELECT * FROM MiTabla WHERE Codigo in
(SELECT Cliente, Max(Codigo) Codigo,
FROM MiTabla
WHERE Condiciones
GROUP BY Cliente)
Order by Codigo;


Gracias por todo

Última edición por gdasoft; 04/09/2012 a las 02:03

Etiquetas: distinct, registro, repetido, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.