2013-10-01 11 views
5

मुझे पता है कि यह एक आसान होने जा रहा है लेकिन दूसरे कोडिंग पर मध्यरात्रि चलाने के बाद मेरे एसक्यूएल मस्तिष्क को तले हुए हैं इसलिए मैं बस कुछ त्वरित मदद के लिए बाहर निकल रहा हूं। मेरे पास एजेंट, एजेंटेंट, अभिभावक खाता, खाता आईडी और टीसीवी के साथ एक टेस्ट टेबल है। मुझे जो करना है वह सभी एजेंट/खाता आईडी खींचें जहां खाता आईडी उस एजेंट के नाम के तहत एक कुल मूल खाते से संबंधित हैं> = 10K।एसक्यूएल ग्रुपिंग/कॉन्ट्रैक्ट वैल्यू

enter image description here

तो इस उदाहरण में, जॉन माता पिता के खाते ABC123 के तहत 2 खातों है और के बाद से अपने कुल मूल्य> = 10K है, इन 2 खींच लिया जायेगा। लेकिन नीचे ध्यान दें जहां जेन के पास एबीसी 123 के तहत 2 खाते हैं, लेकिन बी/सी उनके नाम पर उनके कुल मूल्य < 10K है, उन्हें खींचा नहीं जाएगा।

enter image description here

Essetially मैं सभी AccountIDs जहां माता पिता के खाते का कुल मूल्य वे के लिए उस व्यक्ति है> = 10K के लिए रोल ऊपर खींचने के लिए की जरूरत है: तो परिणाम कुछ इस तरह होगा। बीटीडब्ल्यू, मैं एसक्यूएल सर्वर प्रबंधन स्टूडियो आर 2 का उपयोग कर रहा हूँ।

उत्तर

4

आप 10k मानदंडों को पूरा करने वाले एजेंट/माता-पिता की एक सूची प्राप्त करने के लिए बस एक साधारण समूह करते हैं। तो फिर तुम एक उप चयन में उपयोग कर सकते हैं कि वापस उसी मेज पर शामिल होने के लिए और खाते 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 
संबंधित मुद्दे