Como hacer una consulta

22/09/2004 - 13:27 por fjmasero | Informe spam
Wenas:

Tengo una tabla de la que tengo que sacar 4 campos de los
registros q cumplan la condicion de q la "unión" de dos
de estos campos sea unica, es decir, un 'distinct'.

Con 'select distinct campo1,campo2 from tabla' saco los
registros que quiero, pero también necesito los campos
campo3 y campo4.

Si los añado a la lista de selección, en cuanto haya
valores que lo puedan provocar, devuelve registros = en
lo que se refiere a los campos 1 y 2.

He probado con in, con exists, con any, etc., y na'.

Espero haberme explicado.

¿Se os ocurre como resolverlo?.

Salu2 y gracias.

Preguntas similare

Leer las respuestas

#11 Liliana Sorrentino
23/09/2004 - 18:58 | Informe spam
Mejor sigamos por acá y no por correo.
Cuando Javier Loria en su footer dice "Se aprecia la inclusion de DDL
(CREATE, INSERTS, etc.) que pueda ser copiado y pegado al Query Analizer. "
es justamente para evitar este ida y vuelta sin lograr el objetivo.

Estoy creando una tabla con datos de prueba, confirmame por favor si la
información que tenés es de este tipo, y de ser así, cuál es el resultado
esperado.
En caso de no tener así tu información, por favor, dame ejemplos y
resultados deseados.

CREATE TABLE #Empresas
(Descripcion varchar(40),
IDEmpresa int,
Fecha datetime,
IDe int)

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030101', 100
INSERT #Empresas SELECT 'aaa', 1, '20040101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20040101', 100

PD: Tratemos de terminar en las próximas 26 horas, después gozarán de mi
ausencia por unos hermosísimos 15 días!

"fjmasero" escribió en el mensaje
news:0d9901c4a185$6f2d5260$
Hola nuevamente.

Lo primero, agradecerte MUCHIIIIIIIISIMO tu paciencia y
tu ayuda.

Lo segundo, intentar explicarte mejor mi "problema:

Lo q pretendo es consegur los datos "unicos" entre campo1
y campo2.

Con un ejemplo con "nombres" a lo mejor queda + claro.

Tengo una tabla con los campos Descripcion (varchar),
IDEmpresa (int), Fecha (datetime), ID (int).

Necesito obtener las "unicas" descripciones de cada
empresa, lo cual es facil con select distinct
Descripcion,IDEmpresa ..., pero de las filas que
devolvería esta consulta, también necesito su Fecha y su
ID.

Es decir si en la empresa 1 tengo las descripciones aaa,
bbbb, aaa, bbbb, me devolvería solo dos filas con las
descripciones aaa, bbbb, y sus correspondiente IDEmpresa,
pero de estos, tb quiero su ID y su Fecha.

Además, para "arreglarlo", me piden que lo ordene por la
Fecha.

Ya se q es un poco raro, pero dado el diseño de la base
de datos q me he encontrado, no modificable, no veo otra
forma.

Si te resulta + cómodo, puedes escribirme a mi email, y
si me lo permites, yo al tuyo.

Salu2




Hola,
¿Podrías revisar tu mensaje de ayer a las 10:45 y mi


respuesta de las 11:32?
Si se repiten los campos 1 y 2, y querés mostrarlos una


sola vez, hay que
tomar una decisión con respecto al resto de los campos,


¿cuáles se muestran?


"fjmasero" escribió en el mensaje
news:08a501c4a142$9013d9b0$
Hola Liliana:

Dije q los valores de campo3 y campo4 son irrelevantes
para la consulta, para realizar, pero sus valores SI los
necesito.

Es decir, si tengo varios registros con el mismo valor en
campo1 y tb en campo2, la consulta q necesito deberia
devolver solo uno de ellos, pero el "registro" q
devuelva, q tenga sus valores, y no los de otros
registros de ese "grupo", como puede ocurrir al poner MAX
o MIN a campo3 y campo4.

Salu2

Probá con MIN por ejemplo, o MAX, da lo mismo si no son


relevantes.

SELECT campo1, campo2, MIN(campo3), MIN(campo4)
FROM #test
GROUP BY campo1, campo2

"fjmasero" escribió en el mensaje
news:3cac01c4a0b6$a0d12690$
Bueno Liliana:

Los valores que toman campo3 y campo4 no son relevantes
para la consulta, cxcepto en que SI necesito obtenerlos.

Por eso, me da lo mismo lo que contengan.

En cuanto a la función de agregado, ¿cual?, porque he
probado y na'.

Estoy pelin desesperado la verdad, pq esta consulta la
necesito para una web, programada ocn ASP, y me he
encontrado que los valores de campo1 pueden llevar '




o ".

Había pensado en sacar el select distinct campo1,campo2
from tabla (recordset), y luego crear otro recordset con
select * from tabla where campo1 like 'recordset
("campo1")' and campo2 = recordset("campo1") (bien
codificado claro) para obtener el resto de los datos,
cogiendo solo el primer registro de este segundo
recordset, pero con esa historia de las ' y " en el




texto
de campo1, "rompe" la sentencia sql.

ALUCINO EN COLORES.

Salu2 y gracias.



Es lo mismo, pero ahora repito la pregunta con respecto


a tu información,
¿porqué 'pepe', 1, va con 'xxx' e 'yyy' y no con 'rrr'


e 'yyy'?

La sintaxis de la consulta sería:
SELECT campo1, campo2, y acá alguna función de


agregado para el resto de
los campos
FROM tabla
GROUP BY campo1, campo2


"fjmasero" escribió en el mensaje
news:3b5401c4a0aa$6e854a10$
Vaya Liliana.

Me temo q no me he explicado bien.

Cuando dije la "unión" entre campo1 y campo2, no quería
decir "unión física" (+), sino que el distinct fuera




para
los dos campos.

Es decir, si tenemos por ejemplo

campo1 campo2 campo3 campo4
pepe 1 xxx yyy
pepe 1 rrr yyy
pepe 2 xxx rrr
juan 2 eeee qqq

pretendo q la consulta me devuelva los registros

pepe 1 xxx yyy
pepe 2 xxx rrr
juan 2 eeee qqq

En el caso del primero, como ves, campo1 y campo2 se
repiten con el registro de la tabla, y el distinct
debería devolverme solo uno de los dos.

Salu2 y gracias nuevamente.


En ese caso sería:
SELECT @campo1 + RIGHT( '00000' + CAST(@campo2 AS


VARCHAR ), 5)

Pero me sigue quedando la duda sobre la








información

"fjmasero" escribió en el mensaje
news:165001c4a0a4$9a8c6770$
Gracias Liliana por contestar.

campo1 y campo2 son de distinto tipo, varcha e int
respectivamente.

¿Como solucionarlo?.

Salu2

Hola,
Si tu tabla tiene información de este tipo:

create table #test
(campo1 char, campo2 char, campo3 char, campo4








char)

insert #test select '1', '1', '1', '1'
insert #test select '1', '2', '1', '1'
insert #test select '2', '1', '1', '1'
insert #test select '2', '2', '1', '1'
insert #test select '2', '3', '1', '1'
insert #test select '3', '1', '1', '1'
insert #test select '3', '1', '1', '1'

select distinct (campo1 + campo2), campo3, campo4










from
#test

Pero si campo3 y campo4 pueden ser diferentes para










una
unión dada, por
ejemplo:

insert #test select '3', '1', '1', '2'

Entonces deberás decidir cuáles son los que quieras


mostrar.

Saludos, Liliana.

"fjmasero" escribió en el










mensaje
news:3a3001c4a097$27fb6830$
Wenas:

Tengo una tabla de la que tengo que sacar 4 campos de




los
registros q cumplan la condicion de q la "unión" de








dos
de estos campos sea unica, es decir, un 'distinct'.

Con 'select distinct campo1,campo2 from tabla' saco








los
registros que quiero, pero también necesito los










campos
campo3 y campo4.

Si los añado a la lista de selección, en cuanto haya
valores que lo puedan provocar, devuelve registros >en
lo que se refiere a los campos 1 y 2.

He probado con in, con exists, con any, etc., y na'.

Espero haberme explicado.

¿Se os ocurre como resolverlo?.

Salu2 y gracias.


.





.





.





.





.

Respuesta Responder a este mensaje
#12 fjmasero
24/09/2004 - 12:10 | Informe spam
Hola Liliana:

Felicidades por tus próximas vacaciones. Que suerte.

Bueno, los datos de ejemplo serían:

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030102', 101
INSERT #Empresas SELECT 'aaa', 1, '20040103', 102
INSERT #Empresas SELECT 'bbbb', 1, '20040104', 103
INSERT #Empresas SELECT 'qqqq', 1, '20030105', 104
INSERT #Empresas SELECT 'rrrr', 2, '20030106', 105
INSERT #Empresas SELECT 'qqqq', 2, '20040107', 106
INSERT #Empresas SELECT 'qqqq', 2, '20040108', 107



y los resultados que pretendo serían

'aaa', 1, '20030101', 100
'bbbb', 1, '20030102', 101
'qqqq', 1, '20030105', 104
'rrrr', 2, '20030106', 105
'qqqq', 2, '20040107', 106

Como ves, me interesan las descripciones de cada empresa
NO REPETIDAS.

Sobre la fecha y el id, doy como resultado los datos del
primer registro de los que tiene la descripcion y el
idempresa iguales, pero me daría lo mismo que fuera otro,
pero eso si, con los datos reales del registro "elegido",
puesto que se realizan una seria de acciones con el id y
la fecha obtenidos.

Concretamente, con el recordset que me devuelva la
consulta, es decir, con los datos obtenidos,
los "recorro", los muestro, y cada línea me da acceso a
una pagina de detalle.

¿mejor?.

Salu2


Mejor sigamos por acá y no por correo.
Cuando Javier Loria en su footer dice "Se aprecia la


inclusion de DDL
(CREATE, INSERTS, etc.) que pueda ser copiado y pegado


al Query Analizer. "
es justamente para evitar este ida y vuelta sin lograr


el objetivo.

Estoy creando una tabla con datos de prueba, confirmame


por favor si la
información que tenés es de este tipo, y de ser así,


cuál es el resultado
esperado.
En caso de no tener así tu información, por favor, dame


ejemplos y
resultados deseados.

CREATE TABLE #Empresas
(Descripcion varchar(40),
IDEmpresa int,
Fecha datetime,
IDe int)

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030101', 100
INSERT #Empresas SELECT 'aaa', 1, '20040101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20040101', 100

PD: Tratemos de terminar en las próximas 26 horas,


después gozarán de mi
ausencia por unos hermosísimos 15 días!

"fjmasero" escribió en el mensaje
news:0d9901c4a185$6f2d5260$
Hola nuevamente.

Lo primero, agradecerte MUCHIIIIIIIISIMO tu paciencia y
tu ayuda.

Lo segundo, intentar explicarte mejor mi "problema:

Lo q pretendo es consegur los datos "unicos" entre campo1
y campo2.

Con un ejemplo con "nombres" a lo mejor queda + claro.

Tengo una tabla con los campos Descripcion (varchar),
IDEmpresa (int), Fecha (datetime), ID (int).

Necesito obtener las "unicas" descripciones de cada
empresa, lo cual es facil con select distinct
Descripcion,IDEmpresa ..., pero de las filas que
devolvería esta consulta, también necesito su Fecha y su
ID.

Es decir si en la empresa 1 tengo las descripciones aaa,
bbbb, aaa, bbbb, me devolvería solo dos filas con las
descripciones aaa, bbbb, y sus correspondiente IDEmpresa,
pero de estos, tb quiero su ID y su Fecha.

Además, para "arreglarlo", me piden que lo ordene por la
Fecha.

Ya se q es un poco raro, pero dado el diseño de la base
de datos q me he encontrado, no modificable, no veo otra
forma.

Si te resulta + cómodo, puedes escribirme a mi email, y
si me lo permites, yo al tuyo.

Salu2




Hola,
¿Podrías revisar tu mensaje de ayer a las 10:45 y mi


respuesta de las 11:32?
Si se repiten los campos 1 y 2, y querés mostrarlos una


sola vez, hay que
tomar una decisión con respecto al resto de los campos,


¿cuáles se muestran?


"fjmasero" escribió en el mensaje
news:08a501c4a142$9013d9b0$
Hola Liliana:

Dije q los valores de campo3 y campo4 son irrelevantes
para la consulta, para realizar, pero sus valores SI los
necesito.

Es decir, si tengo varios registros con el mismo valor




en
campo1 y tb en campo2, la consulta q necesito deberia
devolver solo uno de ellos, pero el "registro" q
devuelva, q tenga sus valores, y no los de otros
registros de ese "grupo", como puede ocurrir al poner




MAX
o MIN a campo3 y campo4.

Salu2

Probá con MIN por ejemplo, o MAX, da lo mismo si no son


relevantes.

SELECT campo1, campo2, MIN(campo3), MIN(campo4)
FROM #test
GROUP BY campo1, campo2

"fjmasero" escribió en el mensaje
news:3cac01c4a0b6$a0d12690$
Bueno Liliana:

Los valores que toman campo3 y campo4 no son relevantes
para la consulta, cxcepto en que SI necesito






obtenerlos.

Por eso, me da lo mismo lo que contengan.

En cuanto a la función de agregado, ¿cual?, porque he
probado y na'.

Estoy pelin desesperado la verdad, pq esta consulta la
necesito para una web, programada ocn ASP, y me he
encontrado que los valores de campo1 pueden llevar '




o ".

Había pensado en sacar el select distinct campo1,campo2
from tabla (recordset), y luego crear otro recordset






con
select * from tabla where campo1 like 'recordset
("campo1")' and campo2 = recordset("campo1") (bien
codificado claro) para obtener el resto de los datos,
cogiendo solo el primer registro de este segundo
recordset, pero con esa historia de las ' y " en el




texto
de campo1, "rompe" la sentencia sql.

ALUCINO EN COLORES.

Salu2 y gracias.



Es lo mismo, pero ahora repito la pregunta con








respecto
a tu información,
¿porqué 'pepe', 1, va con 'xxx' e 'yyy' y no con 'rrr'


e 'yyy'?

La sintaxis de la consulta sería:
SELECT campo1, campo2, y acá alguna función de


agregado para el resto de
los campos
FROM tabla
GROUP BY campo1, campo2


"fjmasero" escribió en el mensaje
news:3b5401c4a0aa$6e854a10$
Vaya Liliana.

Me temo q no me he explicado bien.

Cuando dije la "unión" entre campo1 y campo2, no








quería
decir "unión física" (+), sino que el distinct fuera




para
los dos campos.

Es decir, si tenemos por ejemplo

campo1 campo2 campo3 campo4
pepe 1 xxx yyy
pepe 1 rrr yyy
pepe 2 xxx rrr
juan 2 eeee qqq

pretendo q la consulta me devuelva los registros

pepe 1 xxx yyy
pepe 2 xxx rrr
juan 2 eeee qqq

En el caso del primero, como ves, campo1 y campo2 se
repiten con el registro de la tabla, y el distinct
debería devolverme solo uno de los dos.

Salu2 y gracias nuevamente.


En ese caso sería:
SELECT @campo1 + RIGHT( '00000' + CAST(@campo2 AS


VARCHAR ), 5)

Pero me sigue quedando la duda sobre la








información

"fjmasero" escribió en el










mensaje
news:165001c4a0a4$9a8c6770$
Gracias Liliana por contestar.

campo1 y campo2 son de distinto tipo, varcha e int
respectivamente.

¿Como solucionarlo?.

Salu2

Hola,
Si tu tabla tiene información de este tipo:

create table #test
(campo1 char, campo2 char, campo3 char, campo4








char)

insert #test select '1', '1', '1', '1'
insert #test select '1', '2', '1', '1'
insert #test select '2', '1', '1', '1'
insert #test select '2', '2', '1', '1'
insert #test select '2', '3', '1', '1'
insert #test select '3', '1', '1', '1'
insert #test select '3', '1', '1', '1'

select distinct (campo1 + campo2), campo3, campo4










from
#test

Pero si campo3 y campo4 pueden ser diferentes para










una
unión dada, por
ejemplo:

insert #test select '3', '1', '1', '2'

Entonces deberás decidir cuáles son los que quieras


mostrar.

Saludos, Liliana.

"fjmasero" escribió en el










mensaje
news:3a3001c4a097$27fb6830$
Wenas:

Tengo una tabla de la que tengo que sacar 4 campos












de
los
registros q cumplan la condicion de q la "unión" de








dos
de estos campos sea unica, es decir, un 'distinct'.

Con 'select distinct campo1,campo2 from tabla' saco








los
registros que quiero, pero también necesito los










campos
campo3 y campo4.

Si los añado a la lista de selección, en cuanto haya
valores que lo puedan provocar, devuelve registros >>en
lo que se refiere a los campos 1 y 2.

He probado con in, con exists, con any, etc., y na'.

Espero haberme explicado.

¿Se os ocurre como resolverlo?.

Salu2 y gracias.


.





.





.





.





.





.

Respuesta Responder a este mensaje
#13 Liliana Sorrentino
24/09/2004 - 14:35 | Informe spam
Bueno, esperemos que sea esto lo que estabas buscando:

CREATE TABLE #Empresas
(Descripcion varchar(40),
IDEmpresa int,
Fecha datetime,
IDe int)

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030102', 101
INSERT #Empresas SELECT 'aaa', 1, '20040103', 102
INSERT #Empresas SELECT 'bbbb', 1, '20040104', 103
INSERT #Empresas SELECT 'qqqq', 1, '20030105', 104
INSERT #Empresas SELECT 'rrrr', 2, '20030106', 105
INSERT #Empresas SELECT 'qqqq', 2, '20040107', 106
INSERT #Empresas SELECT 'qqqq', 2, '20040108', 107

SELECT Descripcion, IDEmpresa, MIN(Fecha), MIN(IDe)
FROM #Empresas
GROUP BY Descripcion, IDEmpresa
ORDER BY 3

Descripcion IDEmpresa Fecha IDe
aaa 1 2003-01-01 00:00:00.000 100
bbbb 1 2003-01-02 00:00:00.000 101
qqqq 1 2003-01-05 00:00:00.000 104
rrrr 2 2003-01-06 00:00:00.000 105
qqqq 2 2004-01-07 00:00:00.000 106


"fjmasero" escribió en el mensaje
news:154f01c4a21e$baa439e0$
Hola Liliana:

Felicidades por tus próximas vacaciones. Que suerte.

Bueno, los datos de ejemplo serían:

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030102', 101
INSERT #Empresas SELECT 'aaa', 1, '20040103', 102
INSERT #Empresas SELECT 'bbbb', 1, '20040104', 103
INSERT #Empresas SELECT 'qqqq', 1, '20030105', 104
INSERT #Empresas SELECT 'rrrr', 2, '20030106', 105
INSERT #Empresas SELECT 'qqqq', 2, '20040107', 106
INSERT #Empresas SELECT 'qqqq', 2, '20040108', 107



y los resultados que pretendo serían

'aaa', 1, '20030101', 100
'bbbb', 1, '20030102', 101
'qqqq', 1, '20030105', 104
'rrrr', 2, '20030106', 105
'qqqq', 2, '20040107', 106

Como ves, me interesan las descripciones de cada empresa
NO REPETIDAS.

Sobre la fecha y el id, doy como resultado los datos del
primer registro de los que tiene la descripcion y el
idempresa iguales, pero me daría lo mismo que fuera otro,
pero eso si, con los datos reales del registro "elegido",
puesto que se realizan una seria de acciones con el id y
la fecha obtenidos.

Concretamente, con el recordset que me devuelva la
consulta, es decir, con los datos obtenidos,
los "recorro", los muestro, y cada línea me da acceso a
una pagina de detalle.

¿mejor?.

Salu2


Mejor sigamos por acá y no por correo.
Cuando Javier Loria en su footer dice "Se aprecia la


inclusion de DDL
(CREATE, INSERTS, etc.) que pueda ser copiado y pegado


al Query Analizer. "
es justamente para evitar este ida y vuelta sin lograr


el objetivo.

Estoy creando una tabla con datos de prueba, confirmame


por favor si la
información que tenés es de este tipo, y de ser así,


cuál es el resultado
esperado.
En caso de no tener así tu información, por favor, dame


ejemplos y
resultados deseados.

CREATE TABLE #Empresas
(Descripcion varchar(40),
IDEmpresa int,
Fecha datetime,
IDe int)

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030101', 100
INSERT #Empresas SELECT 'aaa', 1, '20040101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20040101', 100

PD: Tratemos de terminar en las próximas 26 horas,


después gozarán de mi
ausencia por unos hermosísimos 15 días!

"fjmasero" escribió en el mensaje
news:0d9901c4a185$6f2d5260$
Hola nuevamente.

Lo primero, agradecerte MUCHIIIIIIIISIMO tu paciencia y
tu ayuda.

Lo segundo, intentar explicarte mejor mi "problema:

Lo q pretendo es consegur los datos "unicos" entre campo1
y campo2.

Con un ejemplo con "nombres" a lo mejor queda + claro.

Tengo una tabla con los campos Descripcion (varchar),
IDEmpresa (int), Fecha (datetime), ID (int).

Necesito obtener las "unicas" descripciones de cada
empresa, lo cual es facil con select distinct
Descripcion,IDEmpresa ..., pero de las filas que
devolvería esta consulta, también necesito su Fecha y su
ID.

Es decir si en la empresa 1 tengo las descripciones aaa,
bbbb, aaa, bbbb, me devolvería solo dos filas con las
descripciones aaa, bbbb, y sus correspondiente IDEmpresa,
pero de estos, tb quiero su ID y su Fecha.

Además, para "arreglarlo", me piden que lo ordene por la
Fecha.

Ya se q es un poco raro, pero dado el diseño de la base
de datos q me he encontrado, no modificable, no veo otra
forma.

Si te resulta + cómodo, puedes escribirme a mi email, y
si me lo permites, yo al tuyo.

Salu2




Hola,
¿Podrías revisar tu mensaje de ayer a las 10:45 y mi


respuesta de las 11:32?
Si se repiten los campos 1 y 2, y querés mostrarlos una


sola vez, hay que
tomar una decisión con respecto al resto de los campos,


¿cuáles se muestran?


"fjmasero" escribió en el mensaje
news:08a501c4a142$9013d9b0$
Hola Liliana:

Dije q los valores de campo3 y campo4 son irrelevantes
para la consulta, para realizar, pero sus valores SI los
necesito.

Es decir, si tengo varios registros con el mismo valor




en
campo1 y tb en campo2, la consulta q necesito deberia
devolver solo uno de ellos, pero el "registro" q
devuelva, q tenga sus valores, y no los de otros
registros de ese "grupo", como puede ocurrir al poner




MAX
o MIN a campo3 y campo4.

Salu2

Probá con MIN por ejemplo, o MAX, da lo mismo si no son


relevantes.

SELECT campo1, campo2, MIN(campo3), MIN(campo4)
FROM #test
GROUP BY campo1, campo2

"fjmasero" escribió en el mensaje
news:3cac01c4a0b6$a0d12690$
Bueno Liliana:

Los valores que toman campo3 y campo4 no son relevantes
para la consulta, cxcepto en que SI necesito






obtenerlos.

Por eso, me da lo mismo lo que contengan.

En cuanto a la función de agregado, ¿cual?, porque he
probado y na'.

Estoy pelin desesperado la verdad, pq esta consulta la
necesito para una web, programada ocn ASP, y me he
encontrado que los valores de campo1 pueden llevar '




o ".

Había pensado en sacar el select distinct campo1,campo2
from tabla (recordset), y luego crear otro recordset






con
select * from tabla where campo1 like 'recordset
("campo1")' and campo2 = recordset("campo1") (bien
codificado claro) para obtener el resto de los datos,
cogiendo solo el primer registro de este segundo
recordset, pero con esa historia de las ' y " en el




texto
de campo1, "rompe" la sentencia sql.

ALUCINO EN COLORES.

Salu2 y gracias.



Es lo mismo, pero ahora repito la pregunta con








respecto
a tu información,
¿porqué 'pepe', 1, va con 'xxx' e 'yyy' y no con 'rrr'


e 'yyy'?

La sintaxis de la consulta sería:
SELECT campo1, campo2, y acá alguna función de


agregado para el resto de
los campos
FROM tabla
GROUP BY campo1, campo2


"fjmasero" escribió en el mensaje
news:3b5401c4a0aa$6e854a10$
Vaya Liliana.

Me temo q no me he explicado bien.

Cuando dije la "unión" entre campo1 y campo2, no








quería
decir "unión física" (+), sino que el distinct fuera




para
los dos campos.

Es decir, si tenemos por ejemplo

campo1 campo2 campo3 campo4
pepe 1 xxx yyy
pepe 1 rrr yyy
pepe 2 xxx rrr
juan 2 eeee qqq

pretendo q la consulta me devuelva los registros

pepe 1 xxx yyy
pepe 2 xxx rrr
juan 2 eeee qqq

En el caso del primero, como ves, campo1 y campo2 se
repiten con el registro de la tabla, y el distinct
debería devolverme solo uno de los dos.

Salu2 y gracias nuevamente.


En ese caso sería:
SELECT @campo1 + RIGHT( '00000' + CAST(@campo2 AS


VARCHAR ), 5)

Pero me sigue quedando la duda sobre la








información

"fjmasero" escribió en el










mensaje
news:165001c4a0a4$9a8c6770$
Gracias Liliana por contestar.

campo1 y campo2 son de distinto tipo, varcha e int
respectivamente.

¿Como solucionarlo?.

Salu2

Hola,
Si tu tabla tiene información de este tipo:

create table #test
(campo1 char, campo2 char, campo3 char, campo4








char)

insert #test select '1', '1', '1', '1'
insert #test select '1', '2', '1', '1'
insert #test select '2', '1', '1', '1'
insert #test select '2', '2', '1', '1'
insert #test select '2', '3', '1', '1'
insert #test select '3', '1', '1', '1'
insert #test select '3', '1', '1', '1'

select distinct (campo1 + campo2), campo3, campo4










from
#test

Pero si campo3 y campo4 pueden ser diferentes para










una
unión dada, por
ejemplo:

insert #test select '3', '1', '1', '2'

Entonces deberás decidir cuáles son los que quieras


mostrar.

Saludos, Liliana.

"fjmasero" escribió en el










mensaje
news:3a3001c4a097$27fb6830$
Wenas:

Tengo una tabla de la que tengo que sacar 4 campos












de
los
registros q cumplan la condicion de q la "unión" de








dos
de estos campos sea unica, es decir, un 'distinct'.

Con 'select distinct campo1,campo2 from tabla' saco








los
registros que quiero, pero también necesito los










campos
campo3 y campo4.

Si los añado a la lista de selección, en cuanto haya
valores que lo puedan provocar, devuelve registros >>en
lo que se refiere a los campos 1 y 2.

He probado con in, con exists, con any, etc., y na'.

Espero haberme explicado.

¿Se os ocurre como resolverlo?.

Salu2 y gracias.


.





.





.





.





.





.

Respuesta Responder a este mensaje
#14 Javier Loria
24/09/2004 - 17:56 | Informe spam
Hola:
No se si estoy equivocado, pero me parece que si Ide es la llave
primaria, talvez el SELECT puede ser:
==SELECT E.Descripcion
, E.IDEmpresa
, E.Fecha
, E.Ide
FROM #Empresas AS E
JOIN (SELECT MIN(IDe) AS IDe
FROM #Empresas
GROUP BY Descripcion
, IDEmpresa ) AS S
ON E.Ide=S.Ide
ORDER BY E.Ide
= Espero sirva,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"fjmasero" wrote in message
news:154f01c4a21e$baa439e0$
Hola Liliana:

Felicidades por tus próximas vacaciones. Que suerte.

Bueno, los datos de ejemplo serían:

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030102', 101
INSERT #Empresas SELECT 'aaa', 1, '20040103', 102
INSERT #Empresas SELECT 'bbbb', 1, '20040104', 103
INSERT #Empresas SELECT 'qqqq', 1, '20030105', 104
INSERT #Empresas SELECT 'rrrr', 2, '20030106', 105
INSERT #Empresas SELECT 'qqqq', 2, '20040107', 106
INSERT #Empresas SELECT 'qqqq', 2, '20040108', 107



y los resultados que pretendo serían

'aaa', 1, '20030101', 100
'bbbb', 1, '20030102', 101
'qqqq', 1, '20030105', 104
'rrrr', 2, '20030106', 105
'qqqq', 2, '20040107', 106

Como ves, me interesan las descripciones de cada empresa
NO REPETIDAS.

Sobre la fecha y el id, doy como resultado los datos del
primer registro de los que tiene la descripcion y el
idempresa iguales, pero me daría lo mismo que fuera otro,
pero eso si, con los datos reales del registro "elegido",
puesto que se realizan una seria de acciones con el id y
la fecha obtenidos.

Concretamente, con el recordset que me devuelva la
consulta, es decir, con los datos obtenidos,
los "recorro", los muestro, y cada línea me da acceso a
una pagina de detalle.

¿mejor?.

Salu2


Mejor sigamos por acá y no por correo.
Cuando Javier Loria en su footer dice "Se aprecia la


inclusion de DDL
(CREATE, INSERTS, etc.) que pueda ser copiado y pegado


al Query Analizer. "
es justamente para evitar este ida y vuelta sin lograr


el objetivo.

Estoy creando una tabla con datos de prueba, confirmame


por favor si la
información que tenés es de este tipo, y de ser así,


cuál es el resultado
esperado.
En caso de no tener así tu información, por favor, dame


ejemplos y
resultados deseados.

CREATE TABLE #Empresas
(Descripcion varchar(40),
IDEmpresa int,
Fecha datetime,
IDe int)

INSERT #Empresas SELECT 'aaa', 1, '20030101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20030101', 100
INSERT #Empresas SELECT 'aaa', 1, '20040101', 100
INSERT #Empresas SELECT 'bbbb', 1, '20040101', 100

PD: Tratemos de terminar en las próximas 26 horas,


después gozarán de mi
ausencia por unos hermosísimos 15 días!

"fjmasero" escribió en el mensaje
news:0d9901c4a185$6f2d5260$
Hola nuevamente.

Lo primero, agradecerte MUCHIIIIIIIISIMO tu paciencia y
tu ayuda.

Lo segundo, intentar explicarte mejor mi "problema:

Lo q pretendo es consegur los datos "unicos" entre campo1
y campo2.

Con un ejemplo con "nombres" a lo mejor queda + claro.

Tengo una tabla con los campos Descripcion (varchar),
IDEmpresa (int), Fecha (datetime), ID (int).

Necesito obtener las "unicas" descripciones de cada
empresa, lo cual es facil con select distinct
Descripcion,IDEmpresa ..., pero de las filas que
devolvería esta consulta, también necesito su Fecha y su
ID.

Es decir si en la empresa 1 tengo las descripciones aaa,
bbbb, aaa, bbbb, me devolvería solo dos filas con las
descripciones aaa, bbbb, y sus correspondiente IDEmpresa,
pero de estos, tb quiero su ID y su Fecha.

Además, para "arreglarlo", me piden que lo ordene por la
Fecha.

Ya se q es un poco raro, pero dado el diseño de la base
de datos q me he encontrado, no modificable, no veo otra
forma.

Si te resulta + cómodo, puedes escribirme a mi email, y
si me lo permites, yo al tuyo.

Salu2




Hola,
¿Podrías revisar tu mensaje de ayer a las 10:45 y mi


respuesta de las 11:32?
Si se repiten los campos 1 y 2, y querés mostrarlos una


sola vez, hay que
tomar una decisión con respecto al resto de los campos,


¿cuáles se muestran?


"fjmasero" escribió en el mensaje
news:08a501c4a142$9013d9b0$
Hola Liliana:

Dije q los valores de campo3 y campo4 son irrelevantes
para la consulta, para realizar, pero sus valores SI los
necesito.

Es decir, si tengo varios registros con el mismo valor




en
campo1 y tb en campo2, la consulta q necesito deberia
devolver solo uno de ellos, pero el "registro" q
devuelva, q tenga sus valores, y no los de otros
registros de ese "grupo", como puede ocurrir al poner




MAX
o MIN a campo3 y campo4.

Salu2

Probá con MIN por ejemplo, o MAX, da lo mismo si no son


relevantes.

SELECT campo1, campo2, MIN(campo3), MIN(campo4)
FROM #test
GROUP BY campo1, campo2

"fjmasero" escribió en el mensaje
news:3cac01c4a0b6$a0d12690$
Bueno Liliana:

Los valores que toman campo3 y campo4 no son relevantes
para la consulta, cxcepto en que SI necesito






obtenerlos.

Por eso, me da lo mismo lo que contengan.

En cuanto a la función de agregado, ¿cual?, porque he
probado y na'.

Estoy pelin desesperado la verdad, pq esta consulta la
necesito para una web, programada ocn ASP, y me he
encontrado que los valores de campo1 pueden llevar '




o ".

Había pensado en sacar el select distinct campo1,campo2
from tabla (recordset), y luego crear otro recordset






con
select * from tabla where campo1 like 'recordset
("campo1")' and campo2 = recordset("campo1") (bien
codificado claro) para obtener el resto de los datos,
cogiendo solo el primer registro de este segundo
recordset, pero con esa historia de las ' y " en el




texto
de campo1, "rompe" la sentencia sql.

ALUCINO EN COLORES.

Salu2 y gracias.



Es lo mismo, pero ahora repito la pregunta con








respecto
a tu información,
¿porqué 'pepe', 1, va con 'xxx' e 'yyy' y no con 'rrr'


e 'yyy'?

La sintaxis de la consulta sería:
SELECT campo1, campo2, y acá alguna función de


agregado para el resto de
los campos
FROM tabla
GROUP BY campo1, campo2


"fjmasero" escribió en el mensaje
news:3b5401c4a0aa$6e854a10$
Vaya Liliana.

Me temo q no me he explicado bien.

Cuando dije la "unión" entre campo1 y campo2, no








quería
decir "unión física" (+), sino que el distinct fuera




para
los dos campos.

Es decir, si tenemos por ejemplo

campo1 campo2 campo3 campo4
pepe 1 xxx yyy
pepe 1 rrr yyy
pepe 2 xxx rrr
juan 2 eeee qqq

pretendo q la consulta me devuelva los registros

pepe 1 xxx yyy
pepe 2 xxx rrr
juan 2 eeee qqq

En el caso del primero, como ves, campo1 y campo2 se
repiten con el registro de la tabla, y el distinct
debería devolverme solo uno de los dos.

Salu2 y gracias nuevamente.


En ese caso sería:
SELECT @campo1 + RIGHT( '00000' + CAST(@campo2 AS


VARCHAR ), 5)

Pero me sigue quedando la duda sobre la








información

"fjmasero" escribió en el










mensaje
news:165001c4a0a4$9a8c6770$
Gracias Liliana por contestar.

campo1 y campo2 son de distinto tipo, varcha e int
respectivamente.

¿Como solucionarlo?.

Salu2

Hola,
Si tu tabla tiene información de este tipo:

create table #test
(campo1 char, campo2 char, campo3 char, campo4








char)

insert #test select '1', '1', '1', '1'
insert #test select '1', '2', '1', '1'
insert #test select '2', '1', '1', '1'
insert #test select '2', '2', '1', '1'
insert #test select '2', '3', '1', '1'
insert #test select '3', '1', '1', '1'
insert #test select '3', '1', '1', '1'

select distinct (campo1 + campo2), campo3, campo4










from
#test

Pero si campo3 y campo4 pueden ser diferentes para










una
unión dada, por
ejemplo:

insert #test select '3', '1', '1', '2'

Entonces deberás decidir cuáles son los que quieras


mostrar.

Saludos, Liliana.

"fjmasero" escribió en el










mensaje
news:3a3001c4a097$27fb6830$
Wenas:

Tengo una tabla de la que tengo que sacar 4 campos












de
los
registros q cumplan la condicion de q la "unión" de








dos
de estos campos sea unica, es decir, un 'distinct'.

Con 'select distinct campo1,campo2 from tabla' saco








los
registros que quiero, pero también necesito los










campos
campo3 y campo4.

Si los añado a la lista de selección, en cuanto haya
valores que lo puedan provocar, devuelve registros >>en
lo que se refiere a los campos 1 y 2.

He probado con in, con exists, con any, etc., y na'.

Espero haberme explicado.

¿Se os ocurre como resolverlo?.

Salu2 y gracias.


.





.





.





.





.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida