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

Mostras solo un registro que tengan campos duplicados

Estas en el tema de Mostras solo un registro que tengan campos duplicados en el foro de Oracle en Foros del Web. Hola, tengo unos registros donde se repiten detemrinaods campos, digamos codigo - nombres - fechas - estado 122 - pepe - 10/11/17 - 1 122 ...
  #1 (permalink)  
Antiguo 10/11/2017, 13:45
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 9 años, 5 meses
Puntos: 4
Mostras solo un registro que tengan campos duplicados

Hola, tengo unos registros donde se repiten detemrinaods campos, digamos

codigo - nombres - fechas - estado

122 - pepe - 10/11/17 - 1
122 - pepe - 11/11/17 - 2
123 - jose - 10/11/17 - 2
124 - lucho - 10/11/17 - 1
124 - lucho - 11/11/17 - 2

de estos quiero q se muestren un registro de los duplicados no importa caul pero solo uno, osea:

122
123
124

este es mi codigo:

Código SQL:
Ver original
  1. SELECT AF.codigo AS codi, A.id AS iduser, A.solicitud, A.solicitante, A.gabinete, A.sala, AF.fecha_ini,
  2.             EA.id AS idestado, EA.estado AS estadosala
  3.             FROM acceso_sala_solicitud A
  4.             LEFT JOIN acceso_sala_fechas AF ON A.codigo = AF.codigo
  5.             LEFT JOIN estado_valida ST ON A.id_estado_sst = ST.id
  6.             LEFT JOIN estado_valida SG ON A.id_estado_seg = SG.id
  7.             LEFT JOIN estados EA ON AF.estado = EA.id
  8.             WHERE A.id_estado_seg = 2 AND A.id_estado_sst = 2 AND A.id_estado_oym = 2 AND AF.fecha_ini BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE + 2)
  9.             GROUP BY AF.codigo, A.id, A.solicitud, A.solicitante, A.gabinete, A.sala, AF.fecha_ini, EA.id, EA.estado
  10.             ORDER BY A.id DESC;
  #2 (permalink)  
Antiguo 12/11/2017, 13:33
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 9 años, 5 meses
Puntos: 4
Respuesta: Mostras solo un registro que tengan campos duplicados

tengo esta consulta que me funciona casi bien y digo casi porque me arroja lo que necesito pero cuando pasan los dos dias las fecha se vuelven null y me los sigue mostrando cosa que deseo que esas fecha que pasaron los 2 dias no se muestren.

Código SQL:
Ver original
  1. SELECT A.id AS iduser, AF.codigo AS codi, A.solicitud, A.solicitante, A.gabinete, A.sala, EA.id AS idestado, EA.estado AS estadosala,
  2. (SELECT fecha_ini FROM acceso_sala_fechas
  3. WHERE codigo = AF.codigo AND fecha_ini BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE + 2)) AS fecha_ini
  4. FROM acceso_sala_fechas AF
  5. INNER JOIN acceso_sala_solicitud A ON A.codigo = AF.codigo
  6. INNER JOIN estado_valida ST ON A.id_estado_sst = ST.id
  7. INNER JOIN estado_valida SG ON A.id_estado_seg = SG.id
  8. INNER JOIN estados EA ON AF.estado = EA.id
  9. WHERE A.id_estado_seg = 2 AND A.id_estado_sst = 2 AND A.id_estado_oym = 2
  10. GROUP BY AF.codigo, A.id, A.solicitud, A.solicitante, A.gabinete, A.sala, EA.id, EA.estado ORDER BY A.id DESC;

alguien podria decir como hacer q una vez apsada esas fecha no me lo muestre....
  #3 (permalink)  
Antiguo 12/11/2017, 13:49
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 9 años, 5 meses
Puntos: 4
Respuesta: Mostras solo un registro que tengan campos duplicados

Bueno creo que solo tuve que agregar esa cosnulta en el where de abajo y funciono peor es lo correcto?

Código SQL:
Ver original
  1. SELECT A.id AS iduser, AF.codigo AS codi, A.solicitud, A.solicitante, A.gabinete, A.sala, EA.id AS idestado, EA.estado AS estadosala,
  2.             (SELECT fecha_ini FROM acceso_sala_fechas
  3.             WHERE codigo = AF.codigo AND fecha_ini BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE + 2)) AS fecha_ini
  4.             FROM acceso_sala_fechas AF
  5.             INNER JOIN acceso_sala_solicitud A ON A.codigo = AF.codigo
  6.             INNER JOIN estado_valida ST ON A.id_estado_sst = ST.id
  7.             INNER JOIN estado_valida SG ON A.id_estado_seg = SG.id
  8.             INNER JOIN estados EA ON AF.estado = EA.id
  9.             WHERE A.id_estado_seg = 2 AND A.id_estado_sst = 2 AND A.id_estado_oym = 2 AND (SELECT fecha_ini FROM acceso_sala_fechas
  10.             WHERE codigo = AF.codigo AND fecha_ini BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE + 2)) IS NOT NULL
  11.             GROUP BY AF.codigo, A.id, A.solicitud, A.solicitante, A.gabinete, A.sala, EA.id, EA.estado ORDER BY A.id DESC;
  #4 (permalink)  
Antiguo 16/11/2017, 03:09
Avatar de AVBorland  
Fecha de Ingreso: marzo-2016
Ubicación: Moscu
Mensajes: 42
Antigüedad: 5 años
Puntos: 4
Respuesta: Mostras solo un registro que tengan campos duplicados

Hola!

Código SQL:
Ver original
  1. SQL> SELECT * FROM test;
  2.  
  3.  
  4.     CODIGO NOMBRES        ESTADO
  5. ---------- ---------- ----------
  6.        122 pepe                1
  7.        122 pepe                2
  8.        123 jose                2
  9.        124 lucho               1
  10.        124 lucho               2
  11.  
  12. SQL> SELECT codigo FROM (SELECT MIN(rownum), codigo FROM test GROUP BY codigo);
  13.  
  14.     CODIGO
  15. ----------
  16.        123
  17.        124
  18.        122
  19.  
  20. SQL>

Etiquetas: campo, campos, date, duplicados, fecha, registro, registros
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 19:18.