【发布时间】:2012-12-05 23:28:20
【问题描述】:
我正在尝试返回 groupid、masteraccountnames 和 CashAmountDiff 的列表,其中任何日期具有相同 groupid 的交易的 CashAmount 总和大于 100。
表架构如下:
TradeT1
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
任何帮助表示赞赏。
【问题讨论】:
-
未定义 CashAmount 或 CashAmountDiff 列
-
代码已更新但未编译。 sqlfiddle.com/#!3/45580/9
标签: sql sql-server-2008 tsql