2013-10-01 41 views
5

我知道这将是一个简单的问题,但是在其他编码的午夜运行之后,我的SQL大脑被炸了,所以我只是伸出一些快速帮助。我有一个包含Agent,AgentID,Parent Account,AccountID和TCV的测试表。我需要做的是将所有帐户ID所属的代理/帐户ID都拉到代理名称> = 10K下的聚合父帐户。SQL分组/合同值

enter image description here

因此,在这个例子中,约翰父帐户ABC123下2个帐户和因为它们的总价值为> = 10K,这2将被拉动。但请注意下面Jane在ABC123下同样有两个账户,但是她/她们的名字总价值是< 10K,他们不会被拉。因此,其结果将是这样的:

enter image description here

Essetially我需要拉在家长帐户的总价值,他们卷起给为该人是> = 10K所有AccountIDs。顺便说一下,我正在使用SQL Server Management Studio R2。

回答

4

您只需通过/必须获得满足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 
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