/ / Il modo più veloce per calcolare il riepilogo del campo del database - sql-server

Il modo più veloce per calcolare il riepilogo del campo del database - sql-server

Ho una tabella ms-sql con la seguente struttura:

Nome nvarchar; Iscriviti nvarchar; Valore int

contenuti di esempio:
Test1, "più", 5
Test1, "meno", 3
Test2, "meno", 1

Mi piacerebbe avere totali per "Nome". (aggiungi quando il segno è = più, sottrai quando il segno è = meno)

risultato:
Test1, 2
Test2, -1

Voglio mostrare questi risultati (e aggiornarli quando viene aggiunto un nuovo record) ... e sto cercando il più veloce soluzione! [Sproc? cursore di avanzamento rapido? calcolare in .net?]

risposte:

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

7 per risposta № 2

La soluzione più rapida è ridisegnare il database per memorizzare il valore come numero intero con segno. Conservare il segno separatamente non ha alcun beneficio.


0 per risposta № 3

dovresti cercare la funzione sql SUM (): http://www.w3schools.com/sql/sql_func_sum.asp


0 per risposta № 4

Un'altra variazione

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