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 № 1select 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