Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Escoger Solo 1 registro de una lista de Duplicados (https://www.clubdelphi.com/foros/showthread.php?t=76648)

oscarac 16-11-2011 05:28:35

Escoger Solo 1 registro de una lista de Duplicados
 
quiza el titulo no sea muy descriptivo pero la idea es la siguiente

Asi estan los datos

Cita:

V02 002-0021049 00003
V02 002-0021049 00015
V02 002-0021049 00023
V02 002-0021049 00033
V03 003-0019984 00002
V03 003-0019984 00012
V06 006-0008190 00014
V06 006-0008190 00014
Asi quiero que salga
Cita:

V02 002-0021049 00003
V03 003-0019984 00002
V06 006-0008190 00014
si es posible me gustaria tambien que pueda aparecer el numero de registro o el Recno
Uso MS SQL SERVER

Estaba Pensando en un Select Distinct pero lo que no se es como capturar el recno

olbeup 16-11-2011 08:41:42

El RecNo para ti cual es de los tres datos que muestras, también el RecNo te lo da Table, Query, ADOQuery, el valor de RecNo es secuencia en los componentes que te he mencionado.

newtron 16-11-2011 09:11:28

Hola.

Que yo sepa el recno solo existe en las bases de datos de escritorio y que lo más similar en las bases de datos cliente/servidor es el bookmark pero no creo que lo puedas usar en una instrucción sql.

Saludos

duilioisola 16-11-2011 09:14:28

Código SQL [-]
select distinct campo1, campo2, campo3 from tabla
Esto te devolverá lo que pides.
El Número de Registro lo pone Delphi. En este caso, del 1 al 3.
Código:

SELECT común
RecNo, Campo1, Campo2, Campo3
1 V02 002-0021049 00003
2 V02 002-0021049 00015
3 V02 002-0021049 00023
4 V02 002-0021049 00033
5 V03 003-0019984 00002
6 V03 003-0019984 00012
7 V06 006-0008190 00014
8 V06 006-0008190 00014

Con SELECT DISTINCT
RecNo, Campo1, Campo2, Campo3
1 V02 002-0021049 00003
2 V03 003-0019984 00002
3 V06 006-0008190 00014


newtron 16-11-2011 09:35:32

Cita:

Empezado por duilioisola (Mensaje 418598)
El Número de Registro lo pone Delphi. En este caso, del 1 al 3.

Pero esto ¿más que un número de registro es un número de orden, no?

olbeup 16-11-2011 09:45:25

Cita:

Empezado por duilioisola (Mensaje 418598)
Código SQL [-]
select distinct campo1, campo2, campo3 from tabla
Esto te devolverá lo que pides.
El Número de Registro lo pone Delphi. En este caso, del 1 al 3.
Código:

SELECT común
RecNo, Campo1, Campo2, Campo3
1 V02 002-0021049 00003
2 V02 002-0021049 00015
3 V02 002-0021049 00023
4 V02 002-0021049 00033
5 V03 003-0019984 00002
6 V03 003-0019984 00012
7 V06 006-0008190 00014
8 V06 006-0008190 00014

Con SELECT DISTINCT
RecNo, Campo1, Campo2, Campo3
1 V02 002-0021049 00003
2 V03 003-0019984 00002
3 V06 006-0008190 00014


La SQL está mal, los datos que te devuelve son:

Cita:

RecNo, Campo1, Campo2, Campo3
1 V02 002-0021049 00003
2 V02 002-0021049 00015
3 V02 002-0021049 00023
4 V02 002-0021049 00033
5 V03 003-0019984 00002
6 V03 003-0019984 00012
7 V06 006-0008190 00014
y la SQL correcta es:
Código SQL [-]
SELECT
    M.CAMPO1
    ,M.CAMPO2
    ,(SELECT TOP 1 CAMPO3 FROM Tabla WHERE CAMPO2 = M.CAMPO2)
  FROM Tabla AS M
  GROUP BY M.CAMPO1, M.CAMPO2
y te devuelve
Cita:

1 V02 002-0021049 00033
2 V03 003-0019984 00002
3 V06 006-0008190 00014
Un saludo.


La franja horaria es GMT +2. Ahora son las 23:25:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi