2013-07-21 64 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