SQL Server - unir consultas horizontalmente

   
Vista:

unir consultas horizontalmente

Publicado por tuisw (8 intervenciones) el 30/11/2010 07:16:31
Necesito unir vairas consultas en forma horizontal ¿se puede ? y que no queden debajo de una de la otra
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:unir consultas horizontalmente

Publicado por Juan Carlos (6 intervenciones) el 30/11/2010 16:09:42
amigo explica mejor tu duda :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:unir consultas horizontalmente

Publicado por tuisw (8 intervenciones) el 01/12/2010 01:38:03
Sorry
Lo que tengo son 12 vistas (que corresponden a los meses) las cuales se generan de varias consultas, lo que pretendo es que se muestren horizontalmente
enero - febrero - marzo y asi pero horizontal mente para que las pueda mostrar en grid
x x x
desde visual pero nose si se pueda hacer una consultas asi.
tenia la idea de crear una tabla Aux la cual se llenara con las vistas donde la tabla tenga 12 columnas de cada mes pero nose si pueda hacer espero explicarme mejor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:unir consultas horizontalmente

Publicado por Leonardo Josué (79 intervenciones) el 01/12/2010 16:01:05
Si tienes algún campo común (llave) lo puedes hacer simplemente con un JOIN

declare @Enero table (id int, total int)
insert into @Enero values (1, 100)
declare @Febrero table (id int, total int)
insert into @Febrero values (1, 200)
declare @Marzo table (id int, total int)
insert into @Marzo values (1, 300)

select T1.id, T1.Total as Enero, T2.Total as Febrero, T3.Total as Marzo
from @Enero T1
inner join @Febrero T2 on T1.id = T2.id
inner join @Marzo T3 on T1.id = T3.id

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:unir consultas horizontalmente

Publicado por tuisw (8 intervenciones) el 02/12/2010 06:01:35
Hola otra ves mira esta es m i vista:

CREATE VIEW ENERO AS
(
SELECT Poa.Despoa AS POA,Concep.Descon AS DESCON,Sum(Gasto.Modgas) AS TOTAL1
FROM Gasto,Partid,Concep,Mespre,Poa
WHERE Gasto.Par_Id=Partid.Id_Par and Partid.Con_Id=Concep.Id_Con and Gasto.Mes_Id=Mespre.Id_Mes and Mespre.Años_Id='2010' and Poa.Id_poa='10802'and Mespre.Nommes='ENERO'
Group by Concep.Descon,Poa.Despoa union Select Poa.Despoa,Partid.Despar,Gasto.Cangas as Total from Gasto,Partid,Concep,Mespre,Presup,Poa Where Gasto.Par_Id=Partid.Id_Par and Gasto.Mes_Id=Mespre.Id_Mes and Mespre.Años_Id=Presup.Id_Año and Mespre.Id_Poa=Presup.Poa_id and Presup.Poa_id=Poa.Id_poa and Mespre.Años_Id='2010' and Poa.Id_poa='10802' and Mespre.Nommes='ENERO'
)

me regresa esto:

10802 10100 XX 50
10802 10101 XX 10
10802 10102 XX 10
10802 10104 XX 10
10802 10151 XX 10
10802 10152 XX 10
10802 10200 XX 30
10802 10201 XX 10
10802 10202 XX 10
10802 10205 XX 10
todo bien hasta ayi pero necesito una por cada mes ene.. feb mar .. dic , y que se muestre en forma horizontal
asi :
ENERO FEBRERO
10802, 10100, XX, 50 10802, 70100, XX, 50 .........
10802, 10101, XX, 10 10802, 70101, XX, 10
10802, 10102, XX, 10 10802, 60102, XX, 10
10802, 10104, XX, 10 10802, 50104, XX, 10
10802, 10151, XX, 10 10802, 40151, XX, 10
10802, 10152, XX, 10 10802, 40152, XX, 10
10802, 10200, XX, 30 10802, 30200, XX, 30
10802, 10201, XX, 10 10802, 30201, XX, 10
10802, 10202, XX, 10 10802, 20202, XX, 10
10802, 10205, XX, 10 10802, 20205, XX, 10

pensaba hacer una Tabla Aux pero no mas no doy una
ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:unir consultas horizontalmente

Publicado por Leonardo Josué (79 intervenciones) el 02/12/2010 16:36:47
Buenos días tuisw,

Por la forma de tus datos veo que no existe un campo como tal que relacione tus tablas, aunque podría inferirse que con el segundo campo podrías realizar la unión. Según los datos que pones de ejemplo la correspondencia entre llaves es la siguiente (tomando el campo 2, que creo llamas DESCON):

10100 -> 70100
10101 -> 70101
10102 -> 60102
10104 -> 50104
10151 -> 40151
10152 -> 40152
10200 -> 30200
10201 -> 30201
10202 -> 20202
10205 -> 20205

De aquí podría deducir que los últimos tres dígitos se pueden utilizar como "llave" para enlazar tus tablas, de tal manera que tuvieras algo como esto:

select * from Enero E
inner join Febrero F on
substring(cast(E.DESCON as varchar), 3, 3) =
substring(cast(F.DESCON as varchar), 3, 3)

Ahora bien, si los datos para cada mes los tienes en una sola tabla, entonces podrías hacer algunas adecuaciones a tu consulta para que te regrese la información de todos los meses, y no solo el de uno, pero aquí necesitaríamos sabes cómo tienes organizada la información desde tus tablas de origen.

Y una última recomendación, cuando unas dos o mas tablas UTILIZA SIEMPRE EL JOIN, y no hagas las uniones explícitas en el where, El JOIN es mucho más rápido y por lo tanto mejora bastante el rendimiento:

En lugar de hacer esto

From Tabla1, Tabla2
where
Tabla1.Id = Tabla2.ID

Hazlo así:

From Tabla1
inner join Tabla2 on Tabla1.id = Tabla2.id

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar