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

Suma de valores que devuelva null cuando sea = 0

Estas en el tema de Suma de valores que devuelva null cuando sea = 0 en el foro de SQL Server en Foros del Web. Hola gente que tal, traigo una consulta nueva que parece bastante sencilla pero me esta dando trabajo. Resulta que quiero sumar dos campos y obtener ...
  #1 (permalink)  
Antiguo 23/04/2013, 09:17
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 17 años
Puntos: 2
Suma de valores que devuelva null cuando sea = 0

Hola gente que tal, traigo una consulta nueva que parece bastante sencilla pero me esta dando trabajo. Resulta que quiero sumar dos campos y obtener el valor por lo que hago:

Código SQL:
Ver original
  1. SELECT Valor1 + Valor2 AS Total FROM Compras

Eso funcionaria, pero como ambos campos pueden poseer valores null hago:

Código SQL:
Ver original
  1. SELECT isnull(Valor1,0) + isnull(Valor2,0) AS Total FROM Compras

De esta manera obtengo el valor de la suma en el caso de que un campo posea un dato y el otro no. El problema surge cuando ambos son null me devuelve cero y solo en este caso si necesito que me devuelva Null porque cuando el valor es cero no se debe mostrar, como debería hacer?
  #2 (permalink)  
Antiguo 23/04/2013, 09:57
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: Suma de valores que devuelva null cuando sea = 0

con un case :)

Código SQL:
Ver original
  1. SELECT
  2. CASE WHEN isnull(Valor1,0) + isnull(Valor2,0)=0 THEN NULL ELSE isnull(Valor1,0) + isnull(Valor2,0) END AS suma FROM tabla


saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: campos, funcion, null, select, suma
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 07:44.