4

これが単純なものになることはわかっていますが、真夜中に他のコーディングを実行した後、私の SQL 脳は揚げられているので、簡単な助けを求めて手を差し伸べています。Agent、AgentID、Parent Account、AccountID、および TCV を含むテスト テーブルがあります。私がする必要があるのは、AccountID がそのエージェント名 >= 10K の下の集約親アカウントに属するすべてのエージェント/アカウント ID をプルすることです。

ここに画像の説明を入力

したがって、この例では、John は親アカウント ABC123 の下に 2 つのアカウントを持っており、それらの合計値が >=10K であるため、これら 2 つが取り出されます。ただし、ジェーンが同様に ABC123 の下に 2 つのアカウントを持っているが、彼女の名前の合計値が 10,000 未満である場合、それらはプルされないことに注意してください。したがって、結果は次のようになります。

ここに画像の説明を入力

基本的に、その人物のロールアップ先の親アカウントの合計値が >= 10K であるすべての AccountID を取得する必要があります。ところで、私は SQL Server Management Studio R2 を使用しています。

4

2 に答える 2

3

10k の基準を満たすエージェント ID/親アカウントのリストを取得することにより、単純なグループ化を行うだけです。次に、それをサブ選択で使用して、同じテーブルに再び結合し、アカウント 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 に答える