我有一個ms-sql表,結構如下:計算數據庫字段彙總的最快方法
名稱nvarchar;簽署nvarchar; VALUE INT
例如內容:
Test1的, '加',5
Test1的, '減',3
的Test2, '減',1
我想有每個 「名稱」 總計。 (當符號附加=加,當標誌=減減)
結果:-1添加
測試1,2
的Test2,
我想顯示這些結果(和更新他們,當一個新的記錄)... 和我在尋找最快的解決方案! [存儲過程?快進光標?在.NET計算]
我有一個ms-sql表,結構如下:計算數據庫字段彙總的最快方法
名稱nvarchar;簽署nvarchar; VALUE INT
例如內容:
Test1的, '加',5
Test1的, '減',3
的Test2, '減',1
我想有每個 「名稱」 總計。 (當符號附加=加,當標誌=減減)
結果:-1添加
測試1,2
的Test2,
我想顯示這些結果(和更新他們,當一個新的記錄)... 和我在尋找最快的解決方案! [存儲過程?快進光標?在.NET計算]
select Name,
sum(case
when Sign = 'plus' then Value
when Sign = 'minus' then -Value
else 0
end)
from MyTable
group by Name
你應該看看了SQL SUM()函數:? http://www.w3schools.com/sql/sql_func_sum.asp
最快的解決辦法是重新設計你的數據庫來存儲值作爲符號的整數。單獨存放標誌沒有任何好處。
另一個變化
select Name,
sum(value*case
when Sign = 'plus' then 1
when Sign = 'minus' then -1
else 0
end)
from MyTable
group by Name
也許是一個不幸的選擇,但我真正的表結構和列名稱不同。我想簡化一些事情...... – Jowen 2010-05-31 13:37:41