Вы можете выполнить условное агрегирование с помощью sum(case...)
:
db.rawQuery(
"select coalesce(sum(case type when 0 then amount else 0 end) - sum(case type when 1 then amount else 0 end), 0) as result from transaction_table where date like ?",
new String[] {ke}
);
Таким образом, суммы рассчитываются только с одним сканированием таблицы.Функция coalesce()
необходима только в том случае, если в таблице на эту дату нет строк.Я также вынул из запроса дату ke
и передал ей более безопасный параметр.Возможно, вместо like
вы можете использовать =
, если ke
- просто дата и не содержит подстановочных знаков, таких как %
или _
.