计算数据库字段摘要的最快方法

时间:2010-05-31 11:58:34

标签: sql-server

我有一个ms-sql表,其结构如下:

名称nvarchar;签署nvarchar;值int

示例内容:
Test1,'plus',5
Test1,'减',3
Test2,'减',1

我希望每个“姓名”的总数。 (当sign = plus时加上,当sign = minus时减去)

结果:
测试1,2 Test2,-1

我想显示这些结果(并在添加新记录时更新它们)... 我正在寻找最快的解决方案! [存储过程?快进游标?在.net中计算]]

4 个答案:

答案 0 :(得分:7)

最快的解决方案是重新设计数据库,将值存储为有符号整数。单独存储标志没有任何好处。

答案 1 :(得分:0)

你应该查找sql​​ SUM()函数: http://www.w3schools.com/sql/sql_func_sum.asp

答案 2 :(得分:0)

select Name, 
    sum(case 
            when Sign = 'plus' then Value 
            when Sign = 'minus' then -Value 
            else 0 
        end)  
from MyTable
group by Name

答案 3 :(得分:0)

另一种变化

select Name,  
    sum(value*case  
            when Sign = 'plus' then 1
            when Sign = 'minus' then -1  
            else 0  
        end)   
from MyTable 
group by Name