我有一个ms-sql表,其结构如下:
名称nvarchar;签署nvarchar;值int
示例内容:
Test1,'plus',5
Test1,'减',3
Test2,'减',1
我希望每个“姓名”的总数。 (当sign = plus时加上,当sign = minus时减去)
结果:
测试1,2
Test2,-1
我想显示这些结果(并在添加新记录时更新它们)... 我正在寻找最快的解决方案! [存储过程?快进游标?在.net中计算]]
答案 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