您好我的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值。
有没有办法可以从这个光标中获取Grocery的总金额?或者我每次都要为每个KEY_SUB_CATEGORY
分别进行查询?
答案 0 :(得分: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';
答案 1 :(得分: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