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

SQL सर्वर 2005 में ROW_NUMBER() OVER () का उपयोग करके विभिन्न स्तंभों पर छँटाई का उपयोग करके पृष्ठांकित क्वेरी

सरल:

SELECT
  OrderID, CustomerID, EmployeeID, OrderDate, ShippedDate,
  @Offset, @Limit, @SortColumn, @SortDirection
FROM
  Orders
WHERE
  ROW_NUMBER() OVER 
  (
    ORDER BY
      /* same expression as in the ORDER BY of the whole query */
  ) BETWEEN (@PageNum - 1) * @PageSize + 1 AND @PageNum * @PageSize 
  /* AND more conditions ... */
ORDER BY
  CASE WHEN @SortDirection = 'A' THEN
    CASE @SortColumn 
      WHEN 'OrderID'    THEN OrderID
      WHEN 'CustomerID' THEN CustomerID
      /* more... */
    END
  END,
  CASE WHEN @SortDirection = 'D' THEN
    CASE @SortColumn 
      WHEN 'OrderID'    THEN OrderID
      WHEN 'CustomerID' THEN CustomerID
      /* more... */
    END 
  END DESC

यह NULL (DESC) पर सॉर्ट करेगा यदि ASC ऑर्डर चुना गया है, या इसके विपरीत।

ROW_NUMBER() फ़ंक्शन को उसी ORDER BY एक्सप्रेशन पर काम करने दें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संदेश 203, स्तर 16, राज्य 2, मान्य पहचानकर्ता नहीं है

  2. अल्पविराम सीमांकित सूची SQL सर्वर बनाने के लिए यह क्वेरी क्या करती है?

  3. TSQL - डेटाबेस में सभी तालिकाओं में कॉलम जोड़ें [कर्सर उदाहरण]

  4. पंक्ति वार योग की गणना करें - Sql सर्वर

  5. एंटिटी फ्रेमवर्क और SQL सर्वर व्यू