2010-05-31 36 views
1

我有一個ms-sql表,結構如下:計算數據庫字段彙總的最快方法

名稱nvarchar;簽署nvarchar; VALUE INT

例如內容:
Test1的, '加',5
Test1的, '減',3
的Test2, '減',1

我想有每個 「名稱」 總計。 (當符號附加=加,當標誌=減減)

結果:-1添加
測試1,2
的Test2,

我想顯示這些結果(和更新他們,當一個新的記錄)... 和我在尋找最快的解決方案! [存儲過程?快進光標?在.NET計算]

+0

也許是一個不幸的選擇,但我真正的表結構和列名稱不同。我想簡化一些事情...... – Jowen 2010-05-31 13:37:41

回答

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

最快的解決辦法是重新設計你的數據庫來存儲值作爲符號的整數。單獨存放標誌沒有任何好處。

0

另一個變化

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