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

registro mas actual de un query con UNION

Estas en el tema de registro mas actual de un query con UNION en el foro de Bases de Datos General en Foros del Web. buenas tardes, tengo un query que usa varios UNION del que obtengo una serie de registros de la forma: nit | nombre | campo2 | ...
  #1 (permalink)  
Antiguo 18/01/2018, 16:02
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta registro mas actual de un query con UNION

buenas tardes, tengo un query que usa varios UNION del que obtengo una serie de registros de la forma:

nit | nombre | campo2 | campo3 | campo4 | fecha
12 | pedro | aaaaaa | bbbbbb | ccccccc | 01/12/2017
33 | marco | aaaaaa | bbbbbb | ccccccc | 01/02/2016
12 | pedro | aaaaaa | bbbbbb | ccccccc | 01/01/2018 (*)
33 | marco | aaaaaa | bbbbbb | ccccccc | 01/12/2017 (*)
44 | jorge | aaaaaa | bbbbbb | ccccccc | 01/12/2017 (*)
33 | marco | aaaaaa | bbbbbb | ccccccc | 01/05/2017

lo que necesito es que me muestre por cada nit el que tiene la fecha mas reciente (*), es decir

nit | nombre | campo2 | campo3 | campo4 | fecha
12 | pedro | aaaaaa | bbbbbb | ccccccc | 01/01/2018
33 | marco | aaaaaa | bbbbbb | ccccccc | 01/12/2017
44 | jorge | aaaaaa | bbbbbb | ccccccc | 01/12/2017

por favor ayúdenme con esto, la consulta es en postgres
saludos
Rafael
  #2 (permalink)  
Antiguo 18/01/2018, 16:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: registro mas actual de un query con UNION

Código SQL:
Ver original
  1. SELECT nit, nombre, campo2,campo3,campo4, MAX(fecha) FROM(
  2. query UNION
  3. ) tabla GROUP BY nit,nombre,campo2,campo3,campo4
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 18/01/2018, 16:56
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: registro mas actual de un query con UNION

y si campo2, campo3, campo4 tuvieran datos diferentes?

nit | nombre | campo2 | campo3 | campo4 | fecha
12 | pedro | aaaaa1 | bbbbb1 | cccccc1 | 01/12/2017
33 | marco | aaaaa2 | bbbbb2 | cccccc2 | 01/02/2016
12 | pedro | aaaaa3 | bbbbb3 | cccccc3 | 01/01/2018 (*)
33 | marco | aaaaa4 | bbbbb4 | cccccc4 | 01/12/2017 (*)
44 | jorge | aaaaa5 | bbbbb5 | cccccc5 | 01/12/2017 (*)
33 | marco | aaaaa6 | bbbbb6 | cccccc6 | 01/05/2017
  #4 (permalink)  
Antiguo 19/01/2018, 07:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: registro mas actual de un query con UNION

En ese caso hay alternativas que dependen del DBMS que uses.
En MySQL por ejemplo, puede se sencillamente ordenar en una subconsulta, y agrupar por los dos primeros campos.
Pero eso no funciona en Oracle o SQL Server.
¿Qué estás usando?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/01/2018, 08:19
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: registro mas actual de un query con UNION

uso postgresql
  #6 (permalink)  
Antiguo 19/01/2018, 08:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: registro mas actual de un query con UNION

Cita:
Iniciado por rafex Ver Mensaje
y si campo2, campo3, campo4 tuvieran datos diferentes?

nit | nombre | campo2 | campo3 | campo4 | fecha
12 | pedro | aaaaa1 | bbbbb1 | cccccc1 | 01/12/2017
33 | marco | aaaaa2 | bbbbb2 | cccccc2 | 01/02/2016
12 | pedro | aaaaa3 | bbbbb3 | cccccc3 | 01/01/2018 (*)
33 | marco | aaaaa4 | bbbbb4 | cccccc4 | 01/12/2017 (*)
44 | jorge | aaaaa5 | bbbbb5 | cccccc5 | 01/12/2017 (*)
33 | marco | aaaaa6 | bbbbb6 | cccccc6 | 01/05/2017
si ese fuera el caso podrias hacer el query nada mas agrupando con nit, nombre y max(fecha) y ese resultado unirlo con el resultado de tu union para sacar todas las columnas ;)

Algo asi:

Código SQL:
Ver original
  1. SELECT t1.* FROM
  2. (
  3. query UNION
  4. ) t1
  5. INNER JOIN
  6. (
  7. SELECT nit,nombre,MAX(fecha) fecha FROM
  8. (
  9. query UNION
  10. ) GROUP BY nit,nombre
  11. ) t2 ON (t1.nit=t2.nit AND t1.nombre=t2.nombre AND t1.fecha0t2.fecha)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 19/01/2018, 09:14
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: registro mas actual de un query con UNION

primero... MUCHAS GRACIAS por la ayuda, estoy probando el query y tengo lo siguente:

me dice que la consulta deberia tener un ALIAS antes del GROUP BY entonces le puse (en negrita azul)

y por favor en la ultima linea como debería ser (negrita lila cursiva):

SELECT t1.* FROM
(
query UNION
) t1
INNER JOIN
(
SELECT nit,nombre,MAX(fecha) fecha FROM
(
query UNION
) as t3 GROUP BY nit,nombre
) t2 ON (t1.nit=t2.nit AND t1.nombre=t2.nombre AND t1.fecha0t2.fecha)
  #8 (permalink)  
Antiguo 19/01/2018, 10:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: registro mas actual de un query con UNION

Error de dedo es un = un poquito de logica amig@

Código SQL:
Ver original
  1. SELECT t1.* FROM
  2. (
  3. query UNION
  4. ) t1
  5. INNER JOIN
  6. (
  7. SELECT nit,nombre,MAX(fecha) fecha FROM
  8. (
  9. query UNION
  10. ) AS t3 GROUP BY nit,nombre
  11. ) t2 ON (t1.nit=t2.nit AND t1.nombre=t2.nombre AND t1.fecha=t2.fecha)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 19/01/2018, 10:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 251
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: registro mas actual de un query con UNION

SI funciono !!!
"Libras" de verdad muchas GRACIAS
Un abrazo... Rafa

Etiquetas: actual, query, registro, union
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 05:12.