2011-09-06 259 views
8

Tengo una consulta T-SQL donde quiero que todas las cantidades negativas se pongan a cero.Cómo poner a cero todos los números negativos en un grupo: por instrucción T-SQL

SELECT 
p.productnumber, 
v.[Description], 
SUM(i.Quantity) as quantity 
FROM ... 
LEFT JOIN ... 
LEFT JOIN ... 
LEFT JOIN ... 
GROUP BY productnumber, [Description] 

Básicamente, si la suma se compone de 5, 5, -1, el resultado debería ser 5 + 5 + 0 = 10, y no (5 + 5 + (-. 1) = 9

¿Cómo iba a hacer eso?

Respuesta

16

Se puede usar un comunicado CASE

SUM(CASE WHEN i.Quantity < 0 THEN 0 ELSE i.Quantity END) 

o una versión más oscura

SUM(NULLIF(i.Quantity, -ABS(i.Quantity))) 

o simplemente excluya estas filas por completo en la cláusula WHERE si no se necesitan para ningún otro propósito.

+0

o 'donde i.Quantity> 0' – cetver

+0

@cetver - Por delante de usted! –

1

SUM(CASE WHEN i.Quantity < 0 THEN 0 ELSE i.Quantity END) as quantity

5

acaba de filtrar los que no desea ...

WHERE quantity > 0 
Cuestiones relacionadas