¿ Un Query dificil ????

30/06/2006 - 22:38 por Byron | Informe spam
Hola Amigos, por favor me podrían ayudar con este problema:
Tengo la siguiente tabla en SQL 2000

Campo1(int) Campo2(int) Campo3(varchar)
1 1 Gato
1 2 Toro
2 1 Vaca
2 2 Gorila
3 1 Jirafa
3 2 Camello

La idea es hacer un SELECT (query) que me permita obtener el siguiente
resultado:
Campo1 Campo3 Campo3
1 Gato Toro
2 Vaca Gorila
3 Jirafa Camello

Por favor me podrían indicar como hacer este Query?. MIL GRACIAS

Byron

Preguntas similare

Leer las respuestas

#1 Ricardo Passians
30/06/2006 - 23:57 | Informe spam
Aqui otra forma del query para lo mismo (#tmp es la tabla):

SELECT CAMPOS21.CAMPO1, CAMPOS21.CAMPO3, CAMPOS22.CAMPO3
FROM (SELECT CAMPO1, CAMPO3 FROM #TMP WHERE CAMPO2=1) CAMPOS21
INNER JOIN (SELECT CAMPO1, CAMPO3 FROM #TMP WHERE CAMPO2=2) CAMPOS22
ON CAMPOS21.CAMPO1ÊMPOS22.CAMPO1




"Jorge Gonzalez" escribió en el mensaje
news:
Estimado Byron

para esos datos y ese ejemplo exactamente ejecuta este algoritmo y te va a
funcionar, sin embargo me imagino que estás tratando de hacer algo más
complejo que lo que nos has mostrado, así que tendrás que adecuarlo a tu
problema específico.

Saludos
Jorge González

create table #tmp(campo1 int , campo2 int , campo3 varchar (20) )

insert into #tmp values (1, 1, 'Gato')
insert into #tmp values (1, 2, 'Toro')
insert into #tmp values (2, 1, 'Vaca')
insert into #tmp values (2, 2, 'Gorila')
insert into #tmp values (3, 1, 'Jirafa')
insert into #tmp values (3, 2, 'Camello')

select Campo1, (select campo3 from #tmp T where T.Campo1 = #tmp.Campo1 and
T.Campo2=1) [C3.1], (select campo3 from #tmp T where T.Campo1 =
#tmp.Campo1 and T.Campo2=2) [C3.2]
from #tmp
group by Campo1

drop table #tmp


"Byron" escribió en el mensaje
news:
Hola Amigos, por favor me podrían ayudar con este problema:
Tengo la siguiente tabla en SQL 2000

Campo1(int) Campo2(int) Campo3(varchar)
1 1 Gato
1 2 Toro
2 1 Vaca
2 2 Gorila
3 1 Jirafa
3 2 Camello

La idea es hacer un SELECT (query) que me permita obtener el siguiente
resultado:
Campo1 Campo3 Campo3
1 Gato Toro
2 Vaca Gorila
3 Jirafa Camello

Por favor me podrían indicar como hacer este Query?. MIL GRACIAS

Byron




Respuesta Responder a este mensaje
#2 Byron
01/07/2006 - 00:02 | Informe spam
Gracias Jorge, muy ingeniosa tu solución, pero como lo intuyes, el problema
es que no solo son 6 animales sino toda el arca de Noé que más o menos son
3000 especímenes, lo que significaría igual número de selects y seguro me
coge el próximo diluvio antes de terminar...

Ojalá alguien se conduela de mí y me ayude a optimizar tu solución... en
todo caso muhas gracias.

Saludos
Byron

"Jorge Gonzalez" escribió:

Estimado Byron

para esos datos y ese ejemplo exactamente ejecuta este algoritmo y te va a
funcionar, sin embargo me imagino que estás tratando de hacer algo más
complejo que lo que nos has mostrado, así que tendrás que adecuarlo a tu
problema específico.

Saludos
Jorge González

create table #tmp(campo1 int , campo2 int , campo3 varchar (20) )

insert into #tmp values (1, 1, 'Gato')
insert into #tmp values (1, 2, 'Toro')
insert into #tmp values (2, 1, 'Vaca')
insert into #tmp values (2, 2, 'Gorila')
insert into #tmp values (3, 1, 'Jirafa')
insert into #tmp values (3, 2, 'Camello')

select Campo1, (select campo3 from #tmp T where T.Campo1 = #tmp.Campo1 and
T.Campo2=1) [C3.1], (select campo3 from #tmp T where T.Campo1 = #tmp.Campo1
and T.Campo2=2) [C3.2]
from #tmp
group by Campo1

drop table #tmp


"Byron" escribió en el mensaje
news:
> Hola Amigos, por favor me podrían ayudar con este problema:
> Tengo la siguiente tabla en SQL 2000
>
> Campo1(int) Campo2(int) Campo3(varchar)
> 1 1 Gato
> 1 2 Toro
> 2 1 Vaca
> 2 2 Gorila
> 3 1 Jirafa
> 3 2 Camello
>
> La idea es hacer un SELECT (query) que me permita obtener el siguiente
> resultado:
> Campo1 Campo3 Campo3
> 1 Gato Toro
> 2 Vaca Gorila
> 3 Jirafa Camello
>
> Por favor me podrían indicar como hacer este Query?. MIL GRACIAS
>
> Byron



Respuesta Responder a este mensaje
#3 Ricardo Passians
01/07/2006 - 00:13 | Informe spam
Debes explicar bien lo que quieres.

Lo que quieres es convertir dinamicamente las filas en columnas ?



"Byron" escribió en el mensaje
news:
Gracias Jorge, muy ingeniosa tu solución, pero como lo intuyes, el
problema
es que no solo son 6 animales sino toda el arca de Noé que más o menos son
3000 especímenes, lo que significaría igual número de selects y seguro me
coge el próximo diluvio antes de terminar...

Ojalá alguien se conduela de mí y me ayude a optimizar tu solución... en
todo caso muhas gracias.

Saludos
Byron

"Jorge Gonzalez" escribió:

Estimado Byron

para esos datos y ese ejemplo exactamente ejecuta este algoritmo y te va
a
funcionar, sin embargo me imagino que estás tratando de hacer algo más
complejo que lo que nos has mostrado, así que tendrás que adecuarlo a tu
problema específico.

Saludos
Jorge González

create table #tmp(campo1 int , campo2 int , campo3 varchar (20) )

insert into #tmp values (1, 1, 'Gato')
insert into #tmp values (1, 2, 'Toro')
insert into #tmp values (2, 1, 'Vaca')
insert into #tmp values (2, 2, 'Gorila')
insert into #tmp values (3, 1, 'Jirafa')
insert into #tmp values (3, 2, 'Camello')

select Campo1, (select campo3 from #tmp T where T.Campo1 = #tmp.Campo1
and
T.Campo2=1) [C3.1], (select campo3 from #tmp T where T.Campo1 =
#tmp.Campo1
and T.Campo2=2) [C3.2]
from #tmp
group by Campo1

drop table #tmp


"Byron" escribió en el mensaje
news:
> Hola Amigos, por favor me podrían ayudar con este problema:
> Tengo la siguiente tabla en SQL 2000
>
> Campo1(int) Campo2(int) Campo3(varchar)
> 1 1 Gato
> 1 2 Toro
> 2 1 Vaca
> 2 2 Gorila
> 3 1 Jirafa
> 3 2 Camello
>
> La idea es hacer un SELECT (query) que me permita obtener el siguiente
> resultado:
> Campo1 Campo3 Campo3
> 1 Gato Toro
> 2 Vaca Gorila
> 3 Jirafa Camello
>
> Por favor me podrían indicar como hacer este Query?. MIL GRACIAS
>
> Byron



Respuesta Responder a este mensaje
#4 Javier Loria
01/07/2006 - 00:20 | Informe spam
Hola Byron:
Tal vez te sirve esto:
==CREATE TABLE Animales(
Pk1 INT NOT NULL
, Pk2 INT NOT NULL
, NombreAnimal VARCHAR(10) NOT NULL
, PRIMARY KEY(Pk1, Pk2)
)
INSERT INTO Animales VALUES (1, 1, 'Gato')
INSERT INTO Animales VALUES (1, 2, 'Toro')
INSERT INTO Animales VALUES (2, 1, 'Vaca')
INSERT INTO Animales VALUES (2, 2, 'Gorila')
INSERT INTO Animales VALUES (3, 1, 'Jirafa')
INSERT INTO Animales VALUES (3, 2, 'Camello')
SELECT *
FROM (SELECT Pk1, Pk2, NombreAnimal FROM Animales) AS Anim
PIVOT (MAX(NombreAnimal )
FOR PK2 IN ([1],[2])
) AS Pvt
SELECT A1.PK1, A1.NombreAnimal, A2.NombreAnimal
FROM Animales AS A1
JOIN Animales AS A2
ON A1.PK1¢.PK1
AND A1.pk2=1
AND A2.Pk2=2

DELETE Animales
WHERE PK1=2 AND PK2=2
SELECT A1.PK1
, COALESCE(A1.NombreAnimal, '')
, COALESCE(A2.NombreAnimal,'')
FROM Animales AS A1
FULL OUTER JOIN Animales AS A2
ON A1.PK1¢.PK1
AND A1.pk2=1
AND A2.pk2=2
WHERE
(A1.pk2=1 OR A1.PK2 IS NULL)
AND (A2.pk2=2 OR A2.PK2 IS NULL)
== Saludos,


Javier Loria
Costa Rica

"Byron" wrote in message
news:
Hola Amigos, por favor me podrían ayudar con este problema:
Tengo la siguiente tabla en SQL 2000

Campo1(int) Campo2(int) Campo3(varchar)
1 1 Gato
1 2 Toro
2 1 Vaca
2 2 Gorila
3 1 Jirafa
3 2 Camello

La idea es hacer un SELECT (query) que me permita obtener el siguiente
resultado:
Campo1 Campo3 Campo3
1 Gato Toro
2 Vaca Gorila
3 Jirafa Camello

Por favor me podrían indicar como hacer este Query?. MIL GRACIAS

Byron
Respuesta Responder a este mensaje
#5 Jorge Gonzalez
01/07/2006 - 00:20 | Informe spam
Estimado Byron

para esos datos y ese ejemplo exactamente ejecuta este algoritmo y te va a
funcionar, sin embargo me imagino que estás tratando de hacer algo más
complejo que lo que nos has mostrado, así que tendrás que adecuarlo a tu
problema específico.

Saludos
Jorge González

create table #tmp(campo1 int , campo2 int , campo3 varchar (20) )

insert into #tmp values (1, 1, 'Gato')
insert into #tmp values (1, 2, 'Toro')
insert into #tmp values (2, 1, 'Vaca')
insert into #tmp values (2, 2, 'Gorila')
insert into #tmp values (3, 1, 'Jirafa')
insert into #tmp values (3, 2, 'Camello')

select Campo1, (select campo3 from #tmp T where T.Campo1 = #tmp.Campo1 and
T.Campo2=1) [C3.1], (select campo3 from #tmp T where T.Campo1 = #tmp.Campo1
and T.Campo2=2) [C3.2]
from #tmp
group by Campo1

drop table #tmp


"Byron" escribió en el mensaje
news:
Hola Amigos, por favor me podrían ayudar con este problema:
Tengo la siguiente tabla en SQL 2000

Campo1(int) Campo2(int) Campo3(varchar)
1 1 Gato
1 2 Toro
2 1 Vaca
2 2 Gorila
3 1 Jirafa
3 2 Camello

La idea es hacer un SELECT (query) que me permita obtener el siguiente
resultado:
Campo1 Campo3 Campo3
1 Gato Toro
2 Vaca Gorila
3 Jirafa Camello

Por favor me podrían indicar como hacer este Query?. MIL GRACIAS

Byron
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida