簡體   English   中英

從房間數據庫求和查詢中獲取 null,有可用數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM