4

我知道这将是一个简单的,但是在午夜运行其他编码之后,我的 SQL 大脑被炸了,所以我只是寻求一些快速帮助。我有一个包含 Agent、AgentID、Parent Account、AccountID 和 TCV 的测试表。我需要做的是提取所有代理/帐户 ID,其中 AccountID 属于该代理名称 >= 10K 下的聚合父帐户。

在此处输入图像描述

所以在这个例子中,John 在父账户 ABC123 下有 2 个账户,由于它们的总值 >=10K,这 2 个将被提取。但请注意下面 Jane 在 ABC123 下同样有 2 个账户,但 b/c 他们名下的总价值小于 10K,它们不会被提取。所以结果会是这样的:

在此处输入图像描述

基本上,我需要提取所有 AccountID,其中他们为该人汇总的父帐户的总价值 >= 10K。顺便说一句,我正在使用 SQL Server Management Studio R2。

4

2 回答 2

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
于 2013-10-01T12:21:24.027 回答
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
于 2013-10-01T12:21:51.227 回答