我知道这将是一个简单的,但在午夜运行其他编码之后,我的SQL大脑就会被炒掉,所以我只是想要快速帮助。我有一个包含Agent,AgentID,Parent Account,AccountID和TCV的测试表。我需要做的是将AccountID所属的所有代理/帐户ID拉到该代理名称> = 10K下的聚合父帐户。
因此,在此示例中,John在父帐户ABC123下有2个帐户,并且由于它们的总值>> = 10K,因此这两个帐户将被取消。但请注意下面Jane在ABC123下同时拥有2个账户,但b / c在她的名字中的总价值是< 10K,他们不会被拉。所以结果将是这样的:
实际上,我需要提取所有AccountID,其中他们为该人员汇总的父帐户的总价值> = 10K。顺便说一下,我正在使用SQL Server Management Studio R2。
答案 0 :(得分:3)
你只需做一个简单的小组/必须获得符合10k标准的agentids / parentaccounts列表。然后,您可以在子选择中使用它连接回同一个表并获取帐户ID列表
select agentid, accountid
from table t
inner join (
select agentid, parentaccount
from table
group by agentid, parentaccount
having sum(tcv) >= 10000
) t1
on t.agentid = t1.agentid
and t.parentaccount = t1.parentaccount
答案 1 :(得分:2)
;WITH MyCTE AS
(
SELECT AgentID,
ParentAccount,
SUM(TCV) AS Total
FROM TableName
GROUP BY AgentID,
ParentAccount
)
SELECT T.AgentId, T.AccountId
FROM Table T
JOIN MyCTE M
ON M.AgentId = T.AgentId
AND M.ParentAccount= T.ParentAccount
WHERE M.Total>10000