0

您好,我的 sqlite3 数据库中有一个这样的表。

db.execSQL(" CREATE TABLE IF NOT EXISTS "
        + DATABASE_TABLE + " ( " + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"   + KEY_DATE + " TEXT, " + KEY_CATEGORY + " TEXT, "
        + KEY_SUB_CATEGORY + " TEXT, " + KEY_AMOUNT + " REAL, "
        + KEY_NOTE + " TEXT " + " );");

KEY_SUB_CATEGORY我查询了数据库并获得KEY_AMOUNT了当前年份的所有值。

Cursor c = db.query(DATABASE_TABLE,new String[] { KEY_SUB_CATEGORY, KEY_AMOUNT }, + KEY_YEAR + "=? ", new String[] { Integer.toString(currentYear) }, null, null, null, null);

现在,有没有办法,我可以根据我的KEY_SUB_CATEGORY.

例如,我KEY_SUB_CATEGORY的杂货店有 3 个值。

有没有办法可以从此光标中获取 Grocery 的总金额?还是我每次都必须单独查询KEY_SUB_CATEGORY

在此处输入图像描述

4

2 回答 2

0

有没有办法可以从此光标中获取 Grocery 的总金额?还是我每次都必须为每个 KEY_SUB_CATEGORY 单独查询?

我建议您进行新的查询(代码更具可读性),然后使用SUM()可以制作技巧的函数。

int sum = 0; 
String query = "select SUM(" + KEY_AMOUNT + ") from " + DATABASE_TABLE 
             + " where " + KEY_SUB_CATEGORY + " = ?";
Cursor c = db.rawQuery(query, new String[] {"Grocery"});
if (c.moveToFirst()) {
   sum = c.getInt(0);
}

输出将是:

select SUM(KEY_AMOUNT) from DATABASE_TABLE where KEY_SUB_CATEGORY = 'Grocery';
于 2013-03-27T19:06:52.500 回答
0
Cursor c = db.query(DATABASE_TABLE,
new String[] { KEY_SUB_CATEGORY, KEY_AMOUNT, "sum(" + KEY_AMOUNT + ") as catsum " }, 
+ KEY_YEAR + "=? ", new String[] { Integer.toString(currentYear) }, 
KEY_SUB_CATEGORY, null, null, null);  

c.getInteger(2) would be the sum
于 2013-03-27T19:11:17.430 回答