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

GROUP BY और ROW_NUMBER को कैसे संयोजित करें?

वाह, अन्य उत्तर जटिल लगते हैं - इसलिए मुझे आशा है कि मैंने कुछ स्पष्ट नहीं छोड़ा है।

आप OVER का उपयोग कर सकते हैं /PARTITION BY समुच्चय के विरुद्ध, और फिर वे GROUP BY के बिना समूहीकरण/एकत्रीकरण करेंगे खंड। इसलिए मैंने अभी आपकी क्वेरी को इसमें संशोधित किया है:

select T2.ID AS T2ID
    ,T2.Name as T2Name
    ,T2.Orders
    ,T1.ID AS T1ID
    ,T1.Name As T1Name
    ,T1Sum.Price
FROM @t2 T2
INNER JOIN (
    SELECT Rel.t2ID
        ,Rel.t1ID
 --       ,MAX(Rel.t1ID)AS t1ID 
-- the MAX returns an arbitrary ID, what i need is: 
      ,ROW_NUMBER()OVER(Partition By Rel.t2ID Order By Price DESC)As PriceList
        ,SUM(Price)OVER(PARTITION BY Rel.t2ID) AS Price
        FROM @t1 T1 
        INNER JOIN @relation Rel ON Rel.t1ID=T1.ID
--        GROUP BY Rel.t2ID
)AS T1Sum ON  T1Sum.t2ID = T2.ID
INNER JOIN @t1 T1 ON T1Sum.t1ID=T1.ID
where t1Sum.PriceList = 1

जो अनुरोधित परिणाम सेट देता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में समय अंतर गणना

  2. SQL सर्वर तालिका में कॉलम पर शून्य बाधा कैसे बनाएं - SQL सर्वर / टी-एसक्यूएल ट्यूटोरियल भाग 51

  3. एक्सेस में SQL सर्वर संग्रहीत कार्यविधि से आउटपुट पैरामीटर का उपयोग करना

  4. एसक्यूएल सर्वर में डबल का प्रतिनिधित्व क्या करता है?

  5. टी-एसक्यूएल रोलबैक नहीं कर सका