2013-10-01 68 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