2012-02-17 56 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

有沒有很好的理由不在你的程序中這樣做? (可能有!但如果沒有,我會去找你的代碼而不是數據庫) – Vache 2012-02-17 04:08:21

+1

一個特定的dbms或只是普通的sql? – 2012-02-17 04:09:19

+1

是的,你可以在程序代碼中以更好的方式做到這一點 – Pranav 2012-02-17 04:10:04

回答

1

是的,你可以做到。這裏是假設你的領域ACC_NO始終是四位數字(或以下)的方式:

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 

注:%是模運算符

0

由於瓦謝給了,你應該做的和你的程序,而比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