我正在尝试返回 groupid、masteraccountnames 和 CashAmountDiff 的列表,其中具有相同 groupid 的交易的 CashAmount 总和在任何日期都大于 100。
表模式是这样的:
贸易T1
TradeId | SubAccountId | MasterAccId | GroupId | TradeDate | TradeType
主账户
Id | MasterAccName
子帐户
Id | SubAccName | MasterAccountId
每个子帐户都链接到一个主帐户。这是一个多对一的关系。
TradeType 确定交易的“方向”,无论是借方还是贷方。我在添加每个 groupid 的借方和贷方时遇到问题。我的查询只是总结一切。我不知道如何合并 Case When Credit(乘 CashAmount * -1),Case When Debit 只使用 CashAmount
总会有超过 1 个 tradeid 链接到一个 groupid。
我在这里有 SQL fiddle 中的表以及我的努力: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
任何帮助表示赞赏。