2013-07-17 31 views
5

Powiedzmy mam tabelę, która wygląda mniej więcej tak:
SQL wartość bezwzględna suma i iteracyjne

cns_amt ---- cusip_nbr

-3000 ------------ -------- 00162Q205
4000 -------------------- 00162Q205
6000 -------------- ------ 00162Q205
8000 -------------------- 00162Q205
10000 ---------------- ---- 33733B100
-2900 -------------------- 33733B100
1000 -------------------- 33733B100
8000 -------------------- 33733B100
7000 -------------------- 464286178
-1200 -------------------- 464286178
1000- ------------------- 464286178
1000 -------------------- 464286178

Jak mogę to zrobić więc uzyskać wyniki:

total_amt ---- cusip_nbr

21000 --------- --------------- 00162Q205
21900 ----------------------- 33733B100
10200 ---- -------------------- 4642861

Zasadniczo chciałbym podsumować każdą wartość bezwzględną dla każdego odrębnego cusip_nbr i zwrócić wynik, który kreśli każdy cusip_nbr i jego odpowiednia suma wartości bezwzględnych. (Tylko trzy odrębne cusip_nbr „s pokazane są tutaj, ale mam ich setki, każdy z cns_amt które muszą być zsumowane)

Odpowiedz

11

Można wykorzystać ABS() uzyskać wartość bezwzględną, a SUM():

SELECT cusip_nbr, SUM(ABS(cns_amt)) 'total_amt' 
FROM Table 
GROUP BY cusip_nbr 

Demo: SQL Fiddle

0
select cusip_nbr, sum(abs(cns_amt)) total_amt from table_name group by cusip_nbr