/ / Najszybszy sposób obliczenia podsumowania pola bazy danych - sql-server

Najszybszy sposób obliczania podsumowania pola bazy danych - sql-server

Mam tabelę ms-sql o następującej strukturze:

Nazwa nvarchar; Zaloguj się nvarchar; Wartość wew

przykładowa zawartość:
Test1, "plus", 5
Test1, "minus", 3
Test2, "minus", 1

Chciałbym mieć sumy na "imię". (dodaj gdy znak = plus, odejmij gdy znak = minus)

wynik:
Test1, 2
Test2, -1

Chcę pokazać te wyniki (i zaktualizować je po dodaniu nowego rekordu) ... i szukam najszybszy rozwiązanie! [sproc? kursor szybkiego przewijania do przodu? obliczyć w .net?]

Odpowiedzi:

0 dla odpowiedzi № 1
select Name,
sum(case
when Sign = "plus" then Value
when Sign = "minus" then -Value
else 0
end)
from MyTable
group by Name

7 dla odpowiedzi nr 2

Najszybszym rozwiązaniem jest przeprojektowanie bazy danych w celu zapisania wartości jako liczba całkowita ze znakiem. Przechowywanie znaku osobno nie przynosi żadnych korzyści.


0 dla odpowiedzi № 3

powinieneś wyszukać funkcję SUM (): http://www.w3schools.com/sql/sql_func_sum.asp


0 dla odpowiedzi nr 4

Kolejna odmiana

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