我有两个功能
@Query("select sum(amount) as sum, dateString from databasetransaction where txnType='A' group by dateString")
fun getExpensesTransaction(): LiveData<List<TxnByDate>>
@Query("select COALESCE(sum(COALESCE(amount,0)), 0) from databasetransaction")
fun getTotal() : LiveData<Int>
对于第一个查询,我正在获取带有对象的数据
{
sum:2000,
dateString:"04/10/2019"
}
对于第二个查询,我得到的值是null,有人可以帮忙吗,我在这里做错什么了?
答案 0 :(得分:0)
我怀疑问题实际上可能不是查询本身,而是处理结果并将其放入Int中。
我认为您根本不需要COALESCE,当然也不需要两次,因为 total 聚合函数与 sum 函数的区别在于它不会返回空,按照:-
sum()和total()聚合函数返回组中所有非NULL值的和。如果没有非NULL输入行,则sum()返回NULL,但total()返回0.0。 sum(X) total(X)
上面的结果是我怀疑正在发生的事情。您会得到一个带小数点的浮点,然后不能将其转换为Int并返回null。
您可以尝试使用:-
SELECT CAST(total(amount) AS INTEGER) from databasetransaction;