2013-07-21 103 views
0

我新的Java編程,所以我需要一些幫助......我做的這個事情積累的...獲得總表列

就這樣..

Score    Accumulated 
10    10 
40    50 
60    110 
and so on....... 

我有在這裏我的代碼...

public int accumulateScores(){ 

     db = this.getReadableDatabase(); 

     String query = "SELECT score, (SELECT sum(score) FROM " 
       + TABLE_NAME+ ")" + " AS accumulated" + " FROM " + TABLE_NAME; 
     Cursor cursor = db.rawQuery(query, null); 

     if (cursor != null) 
      cursor.moveToFirst(); 
      Score score = new Score(Integer.parseInt(cursor.getString(0)), cursor.getInt(1)); 




    } 

我應該怎麼做返回列得分的總和。在此先感謝..任何幫助將十分讚賞..

+0

你不需要任何特定的得分總和排序? –

+0

實際上我並不需要..我只需要添加「score」列的內容並將其顯示在文本視圖中。 – edmund02

回答

1

這應該以相當簡單的方式完成您所需要的操作,只需將所有行的rowid小於當前行的總和即可。如果桌面上有一個自動遞增鍵,您可能想要使用該鍵來獲得更可預測的分數排序。

SELECT Score, 
    (SELECT SUM(Score) 
    FROM table_name a 
    WHERE rowid <= table_name.rowid 
    ) Accumulated 
FROM table_name 
ORDER BY rowid 

An SQLfiddle to test with

編輯:根據您的錯誤示例;

SELECT score, 
    (SELECT SUM(score) 
    FROM score_table a 
    WHERE a.id <= score_table.id 
    ) Accumulated 
FROM score_table 
ORDER BY id 

Another SQLfiddle

+0

@Joachim ..執行時出現錯誤..請參閱上面的.. – edmund02

+1

@ edmund02似乎你已經刪除了這個錯誤,但是在刪除它之前,在你的create table之後你有一個額外的逗號。 –

+0

謝謝@Joachim ..它像魅力一樣工作......最後一個問題我在這裏..我怎樣才能在TextView中顯示它? – edmund02

0

你應該更多使用谷歌,然後輸入以下代碼

SELECT SCORE, (SELECT SUM(SCORE) FROM table_name的PATING WHERE ROWID < = table_name.rowid )FROM table_name的 ORDER累計 BY ROWID