[英]Getting null from room database sum query, with data available
我的 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)), 0) from databasetransaction")
fun getTotal() : LiveData<Int>
對於第一個查詢,我使用 object 獲取數據
{
sum:2000,
dateString:"04/10/2019"
}
對於第二個查詢,我得到 null 作為值,有人可以幫助我,我在這里做錯了什么?
我懷疑問題可能並不在於查詢本身,而是處理結果並將其放入 Int。
我不相信您根本不需要 COALESCE,當然不會出現兩次,因為總聚合 function 與總和function 不同,因為它不會返回Z37A6259CC0C1DAE299A786649的 Z37A6259CC0C1DAE299A786649
sum() 和 total() 聚合函數返回組中所有非 NULL 值的總和。 如果沒有非 NULL 輸入行,則 sum() 返回 NULL 但 total() 返回 0.0。 總和(X) 總和(X)
上面的結果是我懷疑正在發生的事情。 你得到一個帶小數點的浮點,然后不能轉換為 Int 並且返回 null。
您可以嘗試使用:-
SELECT CAST(total(amount) AS INTEGER) from databasetransaction;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.