2012-02-17 18 views
1

私は問題があり、SQLでそれを実行できるかどうかを知りたいと思っています。SQLカラムデータを累積する方法

ID ACC_NO 
---------------- 
1 2342 
2 8938 
3 8089 

Result 
ID ACC_NO ACCUM 
--------------------- 
1 2342 11 
2 8938 28 
3 8089 25 

私はACC_NO(2 + 3 + 4 + 2 = 11)

を蓄積したい私はそれを行うことができますか? SQLにデータを蓄積するオプションはありますか?

ありがとうございました

+3

あなたのプログラムでこれをしないとよい理由はありますか? (あるかもしれませんが、そうでない場合は、DBではなくあなたのコードにあるものに行きます) – Vache

+1

特定のdbmsまたは単純なSQL? –

+1

はいvacheが正しいです、あなたはプログラムコードの中でより良い方法でそれを行うことができます – Pranav

答えて

1

はい、できます。

SELECT ID 
     ,ACC_NO 
     ,FirstDigit = (ACC_NO/1000)  -- Included these 
     ,SecondDigit = (ACC_NO % 1000)/100 -- so you could 
     ,ThirdDigit = (ACC_NO % 100)/10 -- see the 
     ,FourthDigit = (ACC_NO % 10)   -- breakdown 
     ,ACCUM  = (ACC_NO/1000) + ((ACC_NO % 1000)/100) + ((ACC_NO % 100)/10) + (ACC_NO % 10) 
    FROM MyTable 

注:ここでは、あなたのフィールドACC_NOは常に4桁(またはそれ以下)であることを前提としての方法です%はモジュラス演算子では

0

のVacheを与えているとして、あなたはむしろあなたのプログラムで合計を行う必要がありますSQLよりも。 あなたの番号が4桁であることを期待して解決策を提供していますが。

SELECT ID, ACC_NO, (SUBSTRING(ACC_NO,1,1) +SUBSTRING(ACC_NO,2,1) +SUBSTRING(ACC_NO,3,1) +SUBSTRING(ACC_NO,4,1)) as ACCUM 
FROM jj_salary_info