因此,我有一个包含4列的表,并希望对amount
列的值进行求和,其中isExpense
是true
,isExpense
是false
。我想减去这两个值,然后返回这个值。
除了单行查询之外,我对SQL没有太多经验,所以我很难对其进行格式化。
@Query("""
SELECT SUM (amount) AS INCOME FROM `transaction` WHERE isExpense = 0,
SELECT SUM (amount) AS EXPENSE FROM `transaction` WHERE isExpense = 1,
SUM (INCOME - EXPENSE) AS BALANCE
""")
fun getTotalBalance(): Flow<Double>?
如果其他操作失败,我可以通过在表中创建更多列来解决这个问题。
发布于 2021-12-30 02:56:06
使用case
表达式进行条件聚合
SELECT SUM(case when isExpense = 0 then amount else 0 end) AS INCOME,
SUM(case when isExpense = 1 then amount else 0 end) AS EXPENSE,
SUM(case when isExpense = 0 then amount
when isExpense = 1 then -amount
end) as BALANCE
FROM `transaction`
WHERE isExpense IN (0, 1) -- Not needed, but might speed things up if there
-- are other values than 0 and 1
https://stackoverflow.com/questions/70530275
复制相似问题