我想在我的数据库中获得每月余额的摘要。该表包含以下字段
tran_date
type (Income or Expense)
amount
我可以获得每个月检索每种类型的总和但想要整个月的总和。这是我目前的查询:
SELECT DISTINCT strftime('%m%Y', tran_date), type, SUM(amount) FROM tran WHERE exclude = 0 GROUP BY tran_date, type
返回
032013 Income 100
032013 Expense 200
我想在一行中汇总,在本例中为032013 -100。
答案 0 :(得分:1)
只需使用正确的group by
即可。这使用条件聚合,假设您想要“收入 - 支出”:
SELECT strftime('%m%Y', tran_date), type,
SUM(case when type = 'Income' then amount when type = 'Expense' then - amount end)
FROM tran WHERE exclude = 0
GROUP BY tran_date;
如果您只想要全额,那么这就更容易了:
SELECT strftime('%m%Y', tran_date), type,
SUM(amount)
FROM tran WHERE exclude = 0
GROUP BY tran_date;
您的原始查询返回了类型行,因为“type”位于group by
子句中。
此外,distinct
几乎不需要group by
。