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

[SOLUCIONADO] Converitir a diferentes tipos de datos en un Case When?

Estas en el tema de Converitir a diferentes tipos de datos en un Case When? en el foro de SQL Server en Foros del Web. Saludos nuevamente! Veran, me gustaria un poco de su ayuda, ya que probe todos las formas habidas y por haber y no entiendo que estoy ...
  #1 (permalink)  
Antiguo 16/08/2013, 11:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 101
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta Converitir a diferentes tipos de datos en un Case When?

Saludos nuevamente!

Veran, me gustaria un poco de su ayuda, ya que probe todos las formas habidas y por haber y no entiendo que estoy haciendo mal en el case.

Código:
Select
...
sum(M.QTY) Ingreso, sum(M.QTY * D.Qty_per) Cant_Accesorio,   
CASE   
 WHEN D.Qty_per = 0 then 'Wrong Data'      
 WHEN D.issued_qty = 0 then 'Wrong Data'       
 ELSE CAST(D.issued_qty - sum(M.QTY * D.Qty_per) as char(12))
END AS Desperdicio 
FROM ORDER O, REQUIREMENT D, PART P, INVENTORY M  
...
Lo que deseo hacer es que: Cuando un valor este a cero, que en ese registro escriba un texto, pero si los campos son mayores a cero que haga la multiplicacion de los valores que muestro en el query pero aun con el cast me da el siguiente error de desbordamiento, no se que estare haciendo mal.

Código:
SQL Server Database Error: Error de desbordamiento aritmético al convertir numeric al tipo de datos varchar.
Pido un poco de su ayuda y desde ya les agradezco por su cordial apoyo!

Saludos!
  #2 (permalink)  
Antiguo 16/08/2013, 12:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Converitir a diferentes tipos de datos en un Case When?

cuando haces un case los valores que ocupas tiene que ser del mismo tipo por ejemplo

Código SQL:
Ver original
  1. SELECT
  2. CASE WHEN COLUMN=1 THEN 1 ELSE 0 END AS enteros
  3. CASE WHEN CONVERT(VARCHAR(20),COLUMN)='0' THEN 'Error' ELSE 'otra columna' END AS cadenas
  4. FROM tabla

si te fijas todos los valores que se usan en la condicion son del mismo tipo :)

saludos,
Libras
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/08/2013, 13:07
 
Fecha de Ingreso: octubre-2008
Mensajes: 101
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta Respuesta: Converitir a diferentes tipos de datos en un Case When?

Hola, agradezco tu pronta ayuda!

Fijate que probando con lo que me comentastes, hice la conversion y me corrio el query, es decir ya no me dio el problema de desbordamiento pero no me respeta el case, sino que siempre se va hacia el else y me pone un dato y no la palabra "Wron Data". dejandome los valores en negativos.

Código:
CASE   
 WHEN Convert(varchar(24),D.Qty_per) = '0' then 'Wrong Data'      
 WHEN Convert(varchar(24),D.issued_qty) = '0' then 'Wrong Data'       
 ELSE Convert(varchar(24),D.issued_qty - sum(M.QTY * D.Qty_per))
END AS Desperdicio
No se, si me equivoque en algo... :(

Que estare haciendo mal?

EDITO: Acabo de revisar el query y el problema radica en la caidad de decimales que se manejan, ya que no es lo mismo '0' que '0.0000'. Entonces por eso no me lo convertia, pero ya vi que esto era el problema y ya lo solucione!!!

Gracias por la ayuda!!!!

Última edición por head777; 16/08/2013 a las 13:22
  #4 (permalink)  
Antiguo 19/08/2013, 09:06
 
Fecha de Ingreso: septiembre-2006
Mensajes: 97
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Converitir a diferentes tipos de datos en un Case When?

Probaste con Cast? =P

Etiquetas: case, registro, select, server, sql, valor
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 06:14.