• Martes 7 de Abril de 2020, 06:19

Autor Tema:  Consulta A Una Tabla  (Leído 5440 veces)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Consulta A Una Tabla
« en: Lunes 29 de Enero de 2007, 20:26 »
0
Buenas, estoy trabado con esta consulta y le escribo para ver si alguno me puede dar una mano.

Tengo una tabla que tiene 3 campos: IdSuc,FechaBack y Descripcion
Esta tabla no tiene claves primarias, por lo que los id pueden estar repetidos.

Ahora yo lo que tengo que hacer es una consulta que me traiga 1 registro por cada IdSuc que tenga distinto y que traiga el de fecha mas actual y ordenado por IdSuc

Ej.

Código: Text
  1.  
  2. IdSuc      FechaBack   Descripcion
  3. 2             1/1/1950     xxxx
  4. 2             1/1/2007     yyyy
  5. 1             1/1/2006     zzzz
  6. 1             1/1/2000     aaaa
  7.  
  8.  

El resultado de esa consulta tendria que ser:

1,1/1/2006,zzzz
2,1/1/2007,yyyy

Espero que me puedan ayudar.
Saludos.
Intente algunas cosas con MAX y GROUP BY, pero no me sale bien.

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #1 en: Lunes 29 de Enero de 2007, 21:30 »
0
Prueba esto

Código: Text
  1. Select  distinct  IdSuc
  2. From tu_tabla
  3.  

esto te devolvera solo un  IdSuc  de los existan , ahora vos solo tenes que hacer lo demas .....  :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #2 en: Martes 30 de Enero de 2007, 12:31 »
0
Gracias, ya habia hecho algo similar.
Mira, usando esto da bien
Código: Text
  1.  
  2. SELECT DISTINCT IdSuc, MAX (fechabackup) FROM backuppdv GROUP BY IdSuc ORDER BY IdSuc
  3.  
  4.  
Ahora el problema es que me faltaria agregar a eso la descripcion.
Si agrego ese campo en el select nomas me dice que no esta contenida en una funcion de agregado o GROUP BY.
Y si la agrego con un GROUP BY me empieza a mostrar el campo IdSuc (que tenia distinct) repetido.
Asi funcion mal:
Código: Text
  1.  
  2. SELECT DISTINCT idSuc, MAX (fechabackup),descripcion FROM backuppdv GROUP BY idSuc,observacion ORDER BY IdPSuc
  3.  
  4.  

Que puedo probar?

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #3 en: Martes 30 de Enero de 2007, 12:33 »
0
En donde dice 'observacion', en realidad el el campo 'descripcion'.
Lo cambie por descripcion para que quede mejor en el ejemplo.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Consulta A Una Tabla
« Respuesta #4 en: Martes 30 de Enero de 2007, 14:43 »
0
Cita de: "Dieguinho."
Ahora el problema es que me faltaria agregar a eso la descripcion.
Si agrego ese campo en el select nomas me dice que no esta contenida en una funcion de agregado o GROUP BY.
Y si la agrego con un GROUP BY me empieza a mostrar el campo IdSuc (que tenia distinct) repetido.
Asi funcion mal:
Código: Text
  1.  
  2. SELECT DISTINCT idSuc, MAX (fechabackup),descripcion FROM backuppdv GROUP BY idSuc,observacion ORDER BY IdPSuc
  3.  
  4.  

Que puedo probar?
Ese error me suena a access ¿verdad?  :scream:

Bueno, comenzando por el principio. Comenzaste el hilo definiendo una tabla que luego no utilizas, mirá:
"MAX (fechabackup) debería ser MAX (fechaback)"

"descripcion FROM backuppdv GROUP BY idSuc,observacion"

"ORDER BY IdPSuc"  :P ¿error de tipeo? "ORDER BY IdSuc"

Ok, si utilizas la función "MAX", no es necesario el uso de "DISTINCT" ya que "MAX" solo va a devolverte un solo campo.-

No tengo SQL Server instalado pero me parece recordar que el error de "...no esta contenida en una funcion de agregado..." se soluciona colocando en la cláusula GROUP todos los campos que incluiste en el select tal y como están.-

Esto lo probé en MySQL y me quedó así:
Código: Text
  1. SELECT idSuc, MAX(fechaback), descripcion FROM backuppdv GROUP BY idSuc ORDER BY IdSuc
  2.  

 :beer:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #5 en: Martes 30 de Enero de 2007, 15:35 »
0
En realidad los errores de tipeo se deben a que quise cambiar los nombres de mis campos por otros para que quede mas claro al que me quiera ayudar. Je, pero parece que los confundi mas, por lo tanto voy a poner toda la consulta con los nombre reales y listo.

Bueno, como decia antes asi va perfecto:
Código: Text
  1.  
  2. SELECT IdPDV,MAX(FechaBackup) FROM BackupPDV GROUP BY IdPDV ORDER BY IdPDV
  3.  
  4.  
Pero cuando quiero agregar el campo que me falta ("Observacion"), si lo agrego solo en el SELECT no me deja, dice como que tiene que estar dentro del GROUP BY, pero cuando tambien lo agrego en el GROUP BY me modifica los datos y me trae mas de uno para cada idPDV, no el de fecha mas actual como queria.
Código: Text
  1.  
  2. SELECT IdPDV,MAX(FechaBackup),Observacion FROM BackupPDV GROUP BY IdPDV,Observacion ORDER BY IdPDV
  3.  
  4.  
En esta ultima consulta no me tira error pero no me trae los datos que yo quiero.
(si en el GROUP BY agrego tambien la fecha me tira mas registros todavia)

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #6 en: Martes 30 de Enero de 2007, 16:00 »
0
Olvide decir que la base de datos es SQL Server.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Consulta A Una Tabla
« Respuesta #7 en: Martes 30 de Enero de 2007, 16:37 »
0
Cita de: "Dieguinho."
Olvide decir que la base de datos es SQL Server.
 :( No puedo seguir opinando porque no tengo SQL Server y probándolo en MySQL lo que sigue (Que es lo que debería ser por lógica) me funciona perfecto:

Código: Text
  1. SELECT DISTINCT IdPDV,MAX(FechaBackup), observacion FROM BackupPDV GROUP BY IdPDV ORDER BY IdPDV
  2.  

Saludos y suerte con eso.-
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Consulta A Una Tabla
« Respuesta #8 en: Martes 30 de Enero de 2007, 17:18 »
0
Cita de: "Dieguinho."
En realidad los errores de tipeo se deben a que quise cambiar los nombres de mis campos por otros para que quede mas claro al que me quiera ayudar. Je, pero parece que los confundi mas, por lo tanto voy a poner toda la consulta con los nombre reales y listo.

Bueno, como decia antes asi va perfecto:
Código: Text
  1.  
  2. SELECT IdPDV,MAX(FechaBackup) FROM BackupPDV GROUP BY IdPDV ORDER BY IdPDV
  3.  
  4.  
Pero cuando quiero agregar el campo que me falta ("Observacion"), si lo agrego solo en el SELECT no me deja, dice como que tiene que estar dentro del GROUP BY, pero cuando tambien lo agrego en el GROUP BY me modifica los datos y me trae mas de uno para cada idPDV, no el de fecha mas actual como queria.
Código: Text
  1.  
  2. SELECT IdPDV,MAX(FechaBackup),Observacion FROM BackupPDV GROUP BY IdPDV,Observacion ORDER BY IdPDV
  3.  
  4.  
En esta ultima consulta no me tira error pero no me trae los datos que yo quiero.
(si en el GROUP BY agrego tambien la fecha me tira mas registros todavia)
claro eso te esta pasando, porque la descripción es diferente en ambos casos, asi que al agruparlos se toman como registros diferentes...

Nada que hacer pues no hay manera de que el motor sepa cual de los dos comentarios diferentes es el que tu necesitas, pues solo nceesitas uno.

Este tipo de consultas se resolverían fácilmente usando un bloque PL/SQL ( o equivalente según el motor).
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Consulta A Una Tabla
« Respuesta #9 en: Martes 30 de Enero de 2007, 17:50 »
0
Cita de: "JuanK"
claro eso te esta pasando, porque la descripción es diferente en ambos casos, asi que al agruparlos se toman como registros diferentes...

Nada que hacer pues no hay manera de que el motor sepa cual de los dos comentarios diferentes es el que tu necesitas, pues solo nceesitas uno.
El problema es la obligación de tener que agregar observacion en el GROP BY. No entiendo la razón, si alguien la conoce, bienvenida-
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #10 en: Martes 30 de Enero de 2007, 19:22 »
0
Que pena, pense que iba a ser algo mas sencillo.

Igualmente si alguno se ilumina y se le ocurre algo que lo escriba!

A_LEX

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #11 en: Miércoles 31 de Enero de 2007, 20:47 »
0
Código: Text
  1.  
  2. SELECT   * FROM backuppdv
  3. WHERE
  4.   backuppdv.FechaBack IN (SELECT
  5.       max(backuppdv.fechaBack)
  6.     FROM
  7.       backuppdv
  8.     GROUP BY
  9.       backuppdv.IdSuc)
  10.  
  11.  
  12. Arroja lo siguiente:
  13.  
  14. IdSuc      FechaBack          Descripcion
  15. -----------------------------------------
  16. 2          01/01/2007         yyyyyy    
  17. 1          01/01/2006         zzzzzz    
  18.  
  19.  
  20.  
  21.  


Claro, le falta el total por Sucursal  :P

Solo quiero abrir una posibilidad.  :D

Saludos.

A_LEX

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #12 en: Miércoles 31 de Enero de 2007, 21:01 »
0
Sale ya quedo.

Código: Text
  1.  
  2. SELECT
  3.   backuppdv.idSuc,
  4.   (SELECT
  5.       count(DISTINCT (dbo.backuppdv.IdSuc))
  6.     FROM
  7.       dbo.backuppdv
  8.     WHERE
  9.       backuppdv.IdSuc = backuppdv.IdSuc
  10.     GROUP BY
  11.       backuppdv.IdSuc) AS total,
  12.   backuppdv.FechaBack,
  13.   backuppdv.Descripcion
  14. FROM
  15.   backuppdv
  16. WHERE
  17.   backuppdv.FechaBack IN (SELECT
  18.       max(backuppdv.fechaBack)
  19.     FROM
  20.       backuppdv
  21.     GROUP BY
  22.       backuppdv.IdSuc)
  23. ORDER BY IdSuc
  24.  
  25.  
  26.  
  27. idSuc      total      FechaBack          Descripcion
  28. ----------------------------------------------------
  29. 1          2          01/01/2006         zzzzzz    
  30. 2          2          01/01/2007         yyyyyy    
  31.  
  32.  
  33.  
  34.  


  ;)  Saludos.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Consulta A Una Tabla
« Respuesta #13 en: Miércoles 31 de Enero de 2007, 21:09 »
0
Cita de: "A_LEX"
Sale ya quedo.

Código: Text
  1.  
  2. SELECT
  3.   backuppdv.idSuc,
  4.   (SELECT
  5.       count(DISTINCT (dbo.backuppdv.IdSuc))
  6.     FROM
  7.       dbo.backuppdv
  8.     WHERE
  9.       backuppdv.IdSuc = backuppdv.IdSuc
  10.     GROUP BY
  11.       backuppdv.IdSuc) AS total,
  12.   backuppdv.FechaBack,
  13.   backuppdv.Descripcion
  14. FROM
  15.   backuppdv
  16. WHERE
  17.   backuppdv.FechaBack IN (SELECT
  18.       max(backuppdv.fechaBack)
  19.     FROM
  20.       backuppdv
  21.     GROUP BY
  22.       backuppdv.IdSuc)
  23. ORDER BY IdSuc
  24.  
  25.  
  26.  
  27. idSuc      total      FechaBack          Descripcion
  28. ----------------------------------------------------
  29. 1          2          01/01/2006         zzzzzz    
  30. 2          2          01/01/2007         yyyyyy    
  31.  
  32.  
  33.  
  34.  


  ;)  Saludos.
Me parecía que por las subconsultas venía la mano.-

Muy buena  :beer:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #14 en: Jueves 1 de Febrero de 2007, 12:39 »
0
va queriendo, pero...
Funciona bien si tengo fechas diferentes, pero si tengo muchas fechas iguales en la tabla, ya me empieza a tirar mas de un registro de cada tipo.
Copio nuevamente la consulta con los nombres de campo verdaderos, asi resulta mas facil probarla.
Código: Text
  1.  
  2. SELECT
  3.  BackupPDV.IdPDV,
  4.  ( SELECT
  5.      COUNT(DISTINCT (dbo.BackupPDV.IdPDV))
  6.    FROM
  7.      dbo.BackupPDV
  8.    WHERE
  9.      BackupPDV.IdPDV = BackupPDV.IdPDV
  10.    GROUP BY
  11.      BackupPDV.IdPDV) AS Total,
  12.      BackupPDV.FechaBackup,
  13.      BackupPDV.Observacion
  14.  
  15. FROM
  16.  BackupPDV
  17. WHERE
  18.  BackupPDV.FechaBackup IN (SELECT
  19.      MAX(BackupPDV.FechaBackup)
  20.    FROM
  21.      BackupPDV
  22.    GROUP BY
  23.      BackupPDV.IdPDV)
  24. ORDER BY IdPDV
  25.  
  26.  


A mi ya me supero, igual voy a seguir probando.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Consulta A Una Tabla
« Respuesta #15 en: Jueves 1 de Febrero de 2007, 13:59 »
0
Insisto en que lo que haces no tiene sentido, pero bueno esta es la solución si usas Oracle, sino usas oracle sera muy parecida pero deberás reemplazar la palabra ROWNUM con la que sea necesaria en la BD que usas para limitar el numero de filas de la consulta.


<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->SELECT con1.*, (SELECT b.observacion
                FROM   backuppdv b
                WHERE  a.idpdv = b.idpdv
                AND    ROWNUM = 1) AS observacion
FROM   (SELECT   idpdv, MAX (fechabackup)
        FROM     backuppdv a
        GROUP BY a.idpdv
        ORDER BY a.idpdv) con1<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

A_LEX

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #16 en: Jueves 1 de Febrero de 2007, 15:27 »
0
Citar
va queriendo, pero...
Funciona bien si tengo fechas diferentes, pero si tengo muchas fechas iguales en la tabla, ya me empieza a tirar mas de un registro de cada tipo.
Copio nuevamente la consulta con los nombres de campo verdaderos, asi resulta mas facil probarla.


Pues eso cambia el esquema que interpreté de los datos originales que presentaste.

¿Alguna otro dato o condición que estes omitiendo?

Saludos.

Dieguinho.

  • Miembro MUY activo
  • ***
  • Mensajes: 163
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #17 en: Jueves 1 de Febrero de 2007, 18:24 »
0
Creo que no. Igual lo pongo de nuevo por las dudas.
La tabla (BackupPDV) seria asi.

Código: Text
  1.  
  2. Nombre de columna         Tipo de dato    Longitud
  3. IdPDV                              nvarchar           3
  4. FechaBackup                    datetime            8
  5. Observacion                     nvarchar            50
  6.  
  7.  

y este seria un ejemplo de algunos datos:
Código: Text
  1.  
  2.   I30  01/10/2005  OK
  3.   I45  01/12/2006  OK
  4.   I45  01/01/2007  OK
  5.   I45  02/01/2007  OK
  6.   I45  03/01/2007  OK
  7.   I90  05/01/2007  OK
  8.   I30  29/01/2007  Muy bien
  9.   I30  29/01/2007  Muy bien
  10.   905  05/01/2007  OK
  11.   911  05/01/2007  OK
  12.   917  05/01/2007  OK
  13.   918  05/01/2007  OK
  14.   926  05/01/2007  OK
  15.   974  05/01/2007  OK
  16.   975  01/01/2006  OK
  17.   I76  20/01/2007  OK
  18.   I77  20/01/2007  OK
  19.   I80  14/01/2007  OK
  20.   I85  22/01/2007  OK
  21.   I10  29/01/2007  Backup ok
  22.   I15  29/01/2007  Backup ok
  23.   I16  29/01/2007  Backup ok
  24.   I30  29/01/2007  Muy bien
  25.  
  26.  

Y lo que necesitaba era de estos datos traer unicamente 1 registro por IdPDV junto con su fecha (que sea el de fecha mas actual) y el campo observacion. Ordenado por IdPDV

Creo que ahi no me falto mas nada explicar.

Llegado el caso que no haya ninguna consulta que lo resuelva hago dos tablas y cada vez que ingrese un registro lo pongo en una tabla y el que estaba, que ya seria viejo lo paso a otra donde los acumulo y listo. No se, otra cosa no se me ocurre.
Que opinan?

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Consulta A Una Tabla
« Respuesta #18 en: Jueves 1 de Febrero de 2007, 18:35 »
0
la consulta que te puse lo resuelve 100% desde que sepas cual es el equivalente a la palabra clave RowNum en la bd que usas.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #19 en: Jueves 1 de Febrero de 2007, 18:43 »
0
JuanK, en Oracle cual es la funcion del  RowNum ?
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Consulta A Una Tabla
« Respuesta #20 en: Jueves 1 de Febrero de 2007, 19:49 »
0
si una consulta arroja un registro ese registro queda con el rownum=1 asociado,
mejor dicho sirve para numerar las filas resultantes de una consulta, de al manera que si en el filtro colocas

Código: Text
  1. AND    ROWNUM = 1
  2.  

Le condicionas a que solo traiga una fila porque solo una de las filas de la consulta tendra el rownum = 1, si quisieras traer los tres primeros registros de una consulta seria:

Código: Text
  1. AND    ROWNUM &#60;= 3
  2.  


Hay otro (s) como por el ejemplo ROWID que devuelve la dirección 'física' del registro en el sistema de archivos, lo cual se usa para otras finalidades.
Espero haberme hecho entender.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #21 en: Jueves 1 de Febrero de 2007, 19:55 »
0
Sino estoy mal entonces el equivalente en SQL seria

declare @variable as int
select @variable=0

select @variable=count(1)
From
    tabla

if @variable > 0
  print 'mayor que 0'
else
  print @variable
 

:comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Consulta A Una Tabla
« Respuesta #22 en: Jueves 1 de Febrero de 2007, 19:57 »
0
estas mal
Count te cuenta cuantos registros hay en una consulta, rownum es como una columna 'oculta' que tiene el numero correspondiente a cada registro devuelto por la consulta.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Consulta A Una Tabla
« Respuesta #23 en: Jueves 1 de Febrero de 2007, 20:02 »
0
Seria entonces como que la posicion donde se encuentra el registro dentro de la tabla ? :unsure:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Consulta A Una Tabla
« Respuesta #24 en: Jueves 1 de Febrero de 2007, 20:07 »
0
:brickwall:

Creo que debo dejar el whisky  :scream:

Se que tiene que haber una forma muy muy fácil de hacerlo pero no me da la cabeza.

Por ahora lo hice así:

Consulta1:
Código: Text
  1. SELECT IdPDV, MAX(FechaBackup) AS Fecha
  2. FROM BackupPDV
  3. GROUP BY IdPDV
  4. ORDER BY IdPDV;
  5.  
y
Consulta2:
Código: Text
  1. SELECT DISTINCT Consulta1.*, observacion
  2. FROM Consulta1, BackupPDV
  3. WHERE Consulta1.IdPDV=BackupPDV.IdPDV AND Consulta1.Fecha=BackupPDV.FechaBackup;
  4.  

De esta forma solo me devuelve 2 campos con el mismo IdPDV si tienen la misma fecha y distinta observacion.-

Nuevamente  :brickwall:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.