groupid、masteraccountnames、CashAmountDiffのリストを返そうとしています。ここで、同じgroupidを持つ取引のCashAmountの合計は、どの日付でも100を超えています。
テーブルスキーマは次のようになります。
TradeT1
TradeId | SubAccountId | MasterAccId | GroupId | TradeDate | TradeType
MasterAccount
Id | MasterAccName
サブアカウント
Id | SubAccName | MasterAccountId
各サブアカウントはマスターアカウントにリンクされています。それは多対一の関係です。
TradeTypeは、借方か貸方かに関係なく、取引の「方向」を決定します。groupidごとに借方と貸方を追加するのに問題があります。私のクエリはすべてを合計しているだけです。クレジットの場合(CashAmount * -1を掛ける)、デビットの場合はCashAmountを使用する方法がわかりません
1つのグループIDにリンクされた複数のトレードIDが常に存在します。
私の努力とともに、SQLフィドルのテーブルがここにあります:http ://www.sqlfiddle.com/#!3/45580/1/0
SELECT
t.groupId,
ma.MasterAccName,
sum(CASE WHEN t.tradetype = 'Credit'
THEN sum(-1*t.cashamount)
ELSE sum(t.cashamount))
END as CashDiff
FROM tradet1 t
JOIN masteraccount ma
ON t.masteraccid = ma.id
WHERE t.groupid > -1
GROUP BY t.groupid, ma.MasterAccName
HAVING count(t.groupid) > 1 and sum(t.cashamount) > 100
助けていただければ幸いです。