Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Concatenar campos "segun condicion"

Estas en el tema de Concatenar campos "segun condicion" en el foro de SQL Server en Foros del Web. Hola gente, este es mi primer thread en el foro, espero puedan ayudarme! Tengo un grupo de tablas de las cuales tengo que sacar ciertos ...
  #1 (permalink)  
Antiguo 19/10/2009, 09:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Concatenar campos "segun condicion"

Hola gente, este es mi primer thread en el foro, espero puedan ayudarme!

Tengo un grupo de tablas de las cuales tengo que sacar ciertos datos en un formato fijo, el tema es que previo a esto tengo que acomodar ciertos datos.

Ejemplo, tengo los siguientes campos con la siguiente informacion:

PREFIJO CELULAR CARACT NUMERO
011 15 255 5555
0256 15 44 5555
011 0 4255 5555
0256 0 44 5555

Lo que tengo que hacer con esto es, cuando el PREFIJO es 011 el (15) del campo CELULAR tiene que pasar al campo PREFIJO y cuando el PREFIJO "no" es 011 el (15) tiene que pasar al campo CARACT.

El motivo de esto es que en la salida no existe el campo CELULAR!!

Esto, si es posible, lo tengo que agregar al query de salida que les comentaba antes, o bien hacerlo antes de la salida. El script es el siguiente....

select
right('00000000'+a.IDENTIFICADOR_1,8)+
right('000'+a.IDENTIFICADOR_2,3)+
right('000'+a.IDENTIFICADOR_3,3)+
left (a.FECHA,10)+
left(b.prefijo+space(5),5)+
left(b.caracteristica+space(5),5)+
left(b.NUMERO+space(5),5)+
left(b.observaciones+space(60),60)+
left(b.estado+space(2),2)
from TABLA a, TABLA b, TABLA c
where a.id=c.id
and b.estado ='CO'


Muchas gracias por la ayuda!!!!!
  #2 (permalink)  
Antiguo 19/10/2009, 13:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Concatenar campos "segun condicion"

Utiliza CASE para condicionar la salida
  #3 (permalink)  
Antiguo 19/10/2009, 13:24
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Concatenar campos "segun condicion"

Cita:
Iniciado por iislas Ver Mensaje
Utiliza CASE para condicionar la salida
Estube probando el CASE pero no lo tengo muy claro y me da errores de sintaxis diferentes...algo hago mal pero no se que!
Podrias indicarme con un ejemplo con este Query?
Muchas gracias por responder!!!

Saludos
  #4 (permalink)  
Antiguo 19/10/2009, 13:39
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Concatenar campos "segun condicion"

Funciona asi:
Código sql:
Ver original
  1. SELECT CASE WHEN <condicion> THEN <si es verdad>
  2. ELSE <si es falso> END
  3. FROM tu_tabla
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 20/10/2009, 10:57
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Concatenar campos "segun condicion"

Cita:
Iniciado por flaviovich Ver Mensaje
Funciona asi:
Código sql:
Ver original
  1. SELECT CASE WHEN <condicion> THEN <si es verdad>
  2. ELSE <si es falso> END
  3. FROM tu_tabla

Excelente! esto es lo que queria hacer!!! cuando el prefijo sea 011 colocar el 15 asi (01115) y cuando no es 011 colocar el 15 asi (022115) lo dejo por que quizas le sirva a alguien de ejemplo!
Saludos y muchas gracias a los dos!!!!

select
right('00000000'+a.IDENTIFICADOR_1,8)+
right('000'+a.IDENTIFICADOR_2,3)+
right('000'+a.IDENTIFICADOR_3,3)+
left (a.FECHA,10)+
right(' '+b.prefijo+(case b.celular when '15' then '15' else '' end),5)+
right(' '+ b.caracteristica,5)+
right(' '+ b.NUMERO,5)+
left(b.observaciones+space(60),60)+
left(b.estado+space(2),2)
from TABLA a, TABLA b, TABLA c
where a.id=c.id
and b.estado ='CO'
and b.prefijo='011'
union all
select
right('00000000'+a.IDENTIFICADOR_1,8)+
right('000'+a.IDENTIFICADOR_2,3)+
right('000'+a.IDENTIFICADOR_3,3)+
left (a.FECHA,10)+
right(' '+b.prefijo,5)+
right(' '+(case b.celular when '15' then '15' else '' end)+b.caracteristica,5)+
right(' '+ b.NUMERO,5)+
left(b.observaciones+space(60),60)+
left(b.estado+space(2),2)
from TABLA a, TABLA b, TABLA c
where a.id=c.id
and b.estado ='CO'
and b.prefijo<>'011'
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:01.