/ / Най-бърз начин за изчисляване на обобщената информация за полето на база данни - sql-сървър

Най-бърз начин за изчисляване на обобщената информация за полето на база данни - sql-сървър

Имам таблица ms-sql със следната структура:

Име nvarchar; Регистрация nvarchar; Стойност int

примерно съдържание:
Тест1, "плюс", 5
Тест1, "минус", 3
Тест2, "минус", 1

Бих искал да има суми по "Име". (добавете, когато знак = плюс, изваждане, когато знак = минус)

резултат:
Тест1, 2
Тест2, -1

Искам да покажа тези резултати (и да ги актуализирам при добавяне на нов запис) ... и аз търся Най-бързият решение! [Sproc? бърз курсор? изчисляване в .net?]

Отговори:

0 за отговор № 1
select Name,
sum(case
when Sign = "plus" then Value
when Sign = "minus" then -Value
else 0
end)
from MyTable
group by Name

7 за отговор № 2

Най-бързото решение е да преработите базата данни, за да запазите стойността като подписано цяло число. Съхраняването на знака поотделно няма никаква полза.


0 за отговор № 3

трябва да потърсите sql SUM () функция: http://www.w3schools.com/sql/sql_func_sum.asp


0 за отговор № 4

Друг вариант

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