Ayuda con un select dificil

13/12/2006 - 15:34 por Guillermo Narvaez | Informe spam
Señores del grupo:

un query deficil de hacer, eh intentado pero no obtengo los resultados
deseados,
tengo 1 tabla cabecera y 2 tablas de detalles, deseo unir los registros de
las dos tablas detalles que se relacionan mas los registros de datalle-1 que
no estan en detalle-2 y viceversa.

Tabla cabecera "ROL" (R1,R2,R3,R4)

Tabla detalle-1 Tabla detalle-2
R1 C01 R1 C01
R1 C02 R1 C02
R1 C03 R1 C03
R1 C11 R1 C21
R1 C12 R1 C22

Resultado deseado:
r.R1 d1.C01 d2.C01
r.R1 d1.C02 d2.C02
r.R1 d1.C03 d2.C03
r.R1 d1.C11 null
r.R1 d1.C12 null
r.R1 null d2.C21
r.R1 null d2.C22

Preguntas similare

Leer las respuestas

#1 Guillermo Narvaez
13/12/2006 - 17:33 | Informe spam
Muchas gracias Alejandro,
le revise, lo ejecute y funciono OK,

te envio el select mejorado, que lo utilice:

select c.rol, t1.rol, t1.c1, t2.rol, t2.c1
from #cabecera c, #detalle_1 as t1 full join #detalle_2 as t2 on t1.rol =
t2.rol and t1.c1 = t2.c1
where c.rol = coalesce(t1.rol, t2.rol)
order by 1

la funcion coalesce soluciono mis problemas

gracias y un feliz año 2007

Guillermo

"Alejandro Mesa" escribió en el
mensaje news:
Trata:

use tempdb
go

create table #cabecera (
rol char(2) not null
)
go

insert into #cabecera values('R1')
insert into #cabecera values('R2')
insert into #cabecera values('R3')
insert into #cabecera values('R4')
go

create table #detalle_1 (
rol char(2) not null,
c1 char(3) not null
)
go

create table #detalle_2 (
rol char(2) not null,
c1 char(3) not null
)
go

insert into #detalle_1 values('R1', 'C01')
insert into #detalle_1 values('R1', 'C02')
insert into #detalle_1 values('R1', 'C03')
insert into #detalle_1 values('R1', 'C11')
insert into #detalle_1 values('R1', 'C12')
go

insert into #detalle_2 values('R1', 'C01')
insert into #detalle_2 values('R1', 'C02')
insert into #detalle_2 values('R1', 'C03')
insert into #detalle_2 values('R1', 'C21')
insert into #detalle_2 values('R1', 'C22')
go

select
c.rol, t.c1, t.c2
from
#cabecera as c
inner join
(
select
coalesce(t1.rol, t2.rol),
t1.c1,
t2.c1
from
#detalle_1 as t1 full join #detalle_2 as t2
on t1.rol = t2.rol and t1.c1 = t2.c1
) as t(rol, c1, c2)
on c.rol = t.rol
go

drop table #cabecera, #detalle_1, #detalle_2
go


AMB


"Guillermo Narvaez" wrote:

Señores del grupo:

un query deficil de hacer, eh intentado pero no obtengo los resultados
deseados,
tengo 1 tabla cabecera y 2 tablas de detalles, deseo unir los registros
de
las dos tablas detalles que se relacionan mas los registros de datalle-1
que
no estan en detalle-2 y viceversa.

Tabla cabecera "ROL" (R1,R2,R3,R4)

Tabla detalle-1 Tabla detalle-2
R1 C01 R1 C01
R1 C02 R1 C02
R1 C03 R1 C03
R1 C11 R1 C21
R1 C12 R1 C22

Resultado deseado:
r.R1 d1.C01 d2.C01
r.R1 d1.C02 d2.C02
r.R1 d1.C03 d2.C03
r.R1 d1.C11 null
r.R1 d1.C12 null
r.R1 null d2.C21
r.R1 null d2.C22



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