0

我正在尝试在我的数据库中获取每月余额的摘要。该表具有以下字段

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。

4

1 回答 1

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;

您的原始查询返回类型行,因为“类型”在group by子句中。

此外,distinct(几乎)从不需要group by.

于 2013-03-31T17:48:46.627 回答