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 の 1 行にまとめて表示したいと思います。

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;

「type」がgroup by句に含まれていたため、元のクエリは type 行を返しました。

また、distinctでは (ほとんど) 必要ありませんgroup by

于 2013-03-31T17:48:46.627 に答える