SQL Server - Consulta avanzadas de Join

 
Vista:

Consulta avanzadas de Join

Publicado por Misael (7 intervenciones) el 27/11/2013 14:41:02
Necesito ayuda para poder trabajar miren tengo 2 tablas con la siguiente característica

TABLA 1
1
2
3
4
5
6
7
codigo1	nombre	Colegio
12	Lucas	Guteber
78	Marco	Salecianos
h67	Pedro	Salecianos
m90	Pepito	Guteber
9	Jacinta	alber eisten
k70	Luis	simon bolivar

TABLA 2
1
2
3
4
5
codig	cod_sec
12	e43
78	r12
9	h78
34	l90

lo que quiero es crea una variable newcodigo y rellenarlo de la siquiente forma si el código1 es numérico remplazar por el cod_sec de la tabla 2 en caso contrario maneter el mismo código como la

TABLA 3
1
2
3
4
5
6
7
codigo1	nombre	Colegio                       	newcodig
12	Lucas	Guteber                 	e43
78	Marco	Salecianos                  	r12
h67	Pedro	Salecianos                    	h67
m90	Pepito	Guteber                 	m90
9	Jacinta	alber eisten                    	h78
k70	Luis	simon bolivar                     	k70

Ojo la Tabla 3 es el resultado de haber modificado la tabla 1 mediante la consulta estuve intentado pero no puedo hacer que la consulta que pego encaje en el campo newcodigo toda la consulta
1
2
3
4
5
6
7
8
select codigo,nombre,colegio,codigo from  tabla1
where not exists  (select 1 from tabla2 where tabla2.codigo =tabla1.codigo)
 
union
 
select tabla1.codigo,nombre,colegio,cod_sec  from  tabla1
inner join tabla2 on tabla1.codigo=tabla2.codigo
where  exists  (select 1 from tabla2 where tabla2.codigo =tabla1.codigo)

aquí esta la base de datos que fue desarrollada por mi amigo alex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use bd_prueba
go
 
create table tabla1
(
codigo char(10),
nombre varchar(30),
colegio varchar(30)
)
 
 
insert into tabla1 values('12',	'Lucas'	,'Guteber')
insert into tabla1 values ('78',	'Marco',	'Salecianos')
insert into tabla1 values ('h67'	,'Pedro',	'Salecianos')
insert into tabla1 values ('m90',	'Pepito',	'Guteber')
insert into tabla1 values ('9'	,'Jacinta',	'alber eisten')
insert into tabla1 values ('k70',	'Luis',	'simon bolivar')
 
create table tabla2
(
codigo char(10),
cod_sec varchar(30),
 
)
 
 
insert into tabla2 values('12',	'e43'	)
insert into tabla2 values ('78',	'r12')
insert into tabla2 values ('9'	,'h78')
insert into tabla2 values ('34',	'l90')
 
go
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

Consulta avanzadas de Join

Publicado por kikox1 (3 intervenciones) el 27/11/2013 15:39:51
hacer un join de las 2 tablas y en el nuevo campo calcularlo con un case

CASE WHEN ISNUMERIC(CODIG) = 1 THEN cod_sec end AS newcodig
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

Consulta avanzadas de Join

Publicado por Misael (7 intervenciones) el 27/11/2013 16:00:45
como hago eso podrias enviarme el código completo amigo estoy asiendo mis pininos en SQL no soy un maestro amigaso
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
Imágen de perfil de xve
Val: 63
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Consulta avanzadas de Join

Publicado por xve (102 intervenciones) el 27/11/2013 21:23:29
siguiendo lo que dice kikox1, tu consulta seria así:
1
2
3
SELECT tabla1.codigo,nombre,colegio,
CASE WHEN ISNUMERIC(tabla1.codigo) THEN tabla2cod_sec ELSE tabla1.codigo END AS newcodig
FROM tabla1 left join tabla2 ON tabla1.codigo=tabla2.codigo

Pero en las tablas que has puesto de ejemplo, el campo no se llama codigo1!!!

Coméntanos si te funciona, ok?
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