sql server - Ordering sql query results -


मेरा एसक्यूएल क्वेरी कॉलम देता है:

  • product_id ( जो पूर्णांक है)
  • pnl (जो फ्लोट है - नकारात्मक हो सकता है)

मुझे 100 से अधिक पंक्तियां मिलती हैं।

मैं पेट (पीएनएल) पर आधारित शीर्ष 40 पंक्तियों को फ़िल्टर करना चाहता हूं। लेकिन परिणाम पीएनएल कॉलम द्वारा केवल एबीएस (पीएनएल) द्वारा ही नहीं किया जाना चाहिए।

मैं इसे एमएसएसक्यूएल 2005 के लिए करना चाहता हूं।

क्या ऐसा करने का कोई तरीका है? < / P>

आप इसे एक ही चरण / स्टेटमेंट में नहीं कर सकते टॉप x चयन हमेशा ORDER BY आदेश अनुदेश पर आधारित होगा। आप ABS (pnl) पर आधारित टॉप 40 का चयन नहीं कर सकते हैं और उसी समय किसी अन्य चीज़ के द्वारा।

आपको क्या करने की ज़रूरत है दो-चरण की प्रक्रिया - या तो का उपयोग करते हुए एक सीटीई (कॉमन टेबल एक्सप्रेशन) या अस्थायी टेबल - सबसे पहले ABS (pnl) द्वारा क्रमबद्ध शीर्ष 40 पंक्तियों का चयन करें, फिर pnl द्वारा निर्धारित परिणाम का आदेश दें।

कुछ तरह:

  साथ में शीर्ष 40 आरओ के साथ (SELECT TOP 40 product_id, pnl ORDER BY ABS (pnl)) SELECT product_id, pnl से Top40Rows ORDER BY pnl  

Comments