Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पेड़ में मूल्यों के योग की गणना करें (पुनरावर्ती क्वेरी)

LEAD . का उपयोग करने का आपका प्रयास काम नहीं करेगा क्योंकि यह पिछले सभी स्तरों का योग नहीं है और इसकी आईडी अनुक्रमिक होनी चाहिए।

पहले प्रत्येक कर्मचारी के लिए पूर्ण पदानुक्रम का विस्फोट करें जैसे कि प्रत्येक कर्मचारी को पदानुक्रम स्तर के अनुसार एक बार शामिल किया जाता है:

;WITH cte 
AS
(
  SELECT e.ID, e.Name, e.ID as sub_ID 
  FROM @Employees e
  -- no WHERE-condition to get all employees
  UNION ALL
  SELECT 
     c.ID, c.Name -- keep the initial employee
     ,e.ID as sub_ID
  FROM @Employees e
    INNER JOIN cte c ON c.sub_ID = e.ParentID
)

SELECT 
     c.ID
    ,c.Name
    -- parent level
    ,sum(case when c.id =  s.EmployeeID then s.Quantity else 0 end) AS ParentSumSales
    -- child level
    ,sum(case when c.id <> s.EmployeeID then s.Quantity else 0 end) AS ChildSumSales
FROM cte c
LEFT JOIN @Sales as s
ON s.EmployeeID = c.sub_ID
group by c.Name, c.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlLocalDb में सेवा ब्रोकर या Sqlनिर्भरता?

  2. SQL सर्वर 2016:SQL स्क्रिप्ट से एक तालिका बनाएँ

  3. SQL में दो तिथियों के बीच पूर्ण महीनों की संख्या की गणना करना

  4. SQL सर्वर में किसी तालिका से विशिष्ट रिकॉर्ड कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल 112

  5. SQL सर्वर - कुछ शर्तों को पूरा करने वाले कॉलम का चयन करें?