获得总和的问题

时间:2010-09-29 08:33:01

标签: sql sql-server tsql

我有这些数据:

name    qty     date                    flag  
---------------------------------------------    
abc     255     11/10/1986 12:00:00 AM  IN
abc     300     11/10/2010 12:00:00 AM  IN
abc     12      11/10/2012 12:00:00 AM  OUT
abc     13      11/9/2010 12:00:00 AM   OUT
NULL    NULL    NULL                    NULL

我希望在该特定行获得qty的总和:

  • 如果flag为“in”,则添加到总和
  • 如果flag为“out”,那么 从总和中减去

2 个答案:

答案 0 :(得分:13)

SELECT SUM(case flag when 'IN' then qty else -qty end)
from table
WHERE ..... Your conditions here ...

答案 1 :(得分:-1)

我可以想到三种方法。 第一个是带有if语句的循环,我可能不会使用该选项。

第二个是使用Linq进行计算,如果你不知道Linq,请查看这个网站 http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

你可能会使用Lamda表达式,但我对它们不是很好,我不是百分百肯定如何去做,但我觉得Lamda Expressions很可能会给你最优雅的解决方案。