更新 #1:クエリを実行すると、左結合行で構文エラーが発生します (ただし、左結合内でクエリを実行すると、完全に機能します)
SELECT b1.company_id, ((sum(b1.credit)-sum(b1.debit)) as 'Balance'
FROM MyTable b1
JOIN CustomerInfoTable c on c.id = b1.company_id
#Filter for Clients of particular brand, package and active status
where c.brand_id = 2 and c.status = 2 and c.package_id = 3
LEFT JOIN
(
SELECT b2.company_id, sum(b2.debit) as 'Current_Usage'
FROM MyTable b2
WHERE year(b2.timestamp) = '2012' and month(b2.timestamp) = '06'
GROUP BY b2.company_id
)
b3 on b3.company_id = b1.company_id
group by b1.company_id;
元の投稿:
同じテーブルで借方と貸方を追跡します。テーブルには次のスキーマがあります。
| company_id | timestamp | credit | debit |
| 10 | MAY-25 | 100 | 000 |
| 11 | MAY-25 | 000 | 054 |
| 10 | MAY-28 | 000 | 040 |
| 12 | JUN-01 | 100 | 000 |
| 10 | JUN-25 | 150 | 000 |
| 10 | JUN-25 | 000 | 025 |
私の結果として、私は見たい:
| Grouped by: company_id | Balance* | Current_Usage (in June) |
| 10 | 185 | 25 |
| 12 | 100 | 0 |
| 11 | -54 | 0 |
残高: (sum(credit) - sum(debits))* で計算 - タイムスタンプは関係ありません
Current_Usage: sum(debits) で計算 - ただし、JUN の借方のみ。
問題: すぐに JUN タイムスタンプでフィルター処理すると、すべての時間の残高が計算されず、6 月のトランザクションの残高だけが計算されます。
月ごとの現在の使用量を計算する方法はありますが、テーブル内のすべてのトランザクションの残高は計算できます。私のコードでは、JUN の結果のみが現在の使用量の計算にフィルター処理されることを除いて、すべてが機能しています。
SELECT b.company_id, ((sum(b.credit)-sum(b.debit))/1024/1024/1024/1024) as 'BW_remaining', sum(b.debit/1024/1024/1024/1024/28*30) as 'Usage_per_month'
FROM mytable b
#How to filter this only for the current_usage calculation?
WHERE month(a.timestamp) = 'JUN' and a.credit = 0
#Group by company in order to sum all entries for balance
group by b.company_id
order by b.balance desc;