Android 从房间数据库总和查询中获取空值,数据可用
我的dao中有两个函数Android 从房间数据库总和查询中获取空值,数据可用,android,kotlin,android-room,android-livedata,Android,Kotlin,Android Room,Android Livedata,我的dao中有两个函数 @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)
@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>
对于第二个查询,我得到的值为null,有人能帮我一下吗?我在这里做错了什么?我怀疑问题可能不是查询本身,而是处理结果并将其放入Int中 我认为您根本不需要合并,当然不需要两次,因为聚合函数与求和函数的不同之处在于它不返回null,如下所示:- sum()和total()聚合函数返回组中所有非空值的总和。如果没有非空的输入行,则sum()返回NULL,但total()返回0.0 上述结果正是我所怀疑的。您将得到一个带有小数点的浮点,然后无法将其转换为Int,并返回null 您可以尝试使用:-
SELECT CAST(total(amount) AS INTEGER) from databasetransaction;
解决了它,这实际上是我的viewmodel的问题,我没有使用从第二次查询中获得结果的变量,因此,它是空的,只要我将observer放在上面或进行数据绑定,它就开始工作。您可以添加视图模型类吗。因为我也面临同样的问题。
SELECT CAST(total(amount) AS INTEGER) from databasetransaction;