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

डायनेमिक ROW_NUMBER() OVER ORDER BY स्टेटमेंट में दोहराव को हटाना

ऐसा करने का एक तरीका यह होगा कि आप कॉलम उपनाम को एक अलग स्तर पर परिभाषित करें ताकि आप अभिव्यक्ति को दोहराए बिना इसे दो बार संदर्भित कर सकें।

SELECT *,
       Row_number() OVER (ORDER BY 
                 CASE WHEN @SortBy LIKE '% ASC' THEN sort_col END ASC, 
                 CASE WHEN @SortBy LIKE '% DESC' THEN sort_col END DESC) AS RowNumber
FROM   YourTable
       CROSS APPLY (SELECT CASE
                             WHEN @SortBy LIKE 'column1 %' THEN Cast(column1 AS SQL_VARIANT)
                             WHEN @SortBy LIKE 'column2 %' THEN Cast(column2 AS SQL_VARIANT)
                             WHEN @SortBy LIKE 'column3 %' THEN Cast(column3 AS SQL_VARIANT)
                             WHEN @SortBy LIKE 'column4 %' THEN Cast(column4 AS SQL_VARIANT)
                           END) C(sort_col) 

मैं इसके बजाय इसके लिए गतिशील एसक्यूएल का उपयोग करने पर विचार करता हूं। इस तरह की कैच ऑल क्वेरी एक अच्छी योजना प्राप्त करने के विचार को मार देगी जो एक प्रकार से बचने के लिए इंडेक्स का उपयोग कर सकती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक अत्यंत बड़ी तालिका का सामान्यीकरण

  2. sql में गतिशील रूप से कॉलम का नाम बदलें

  3. डुप्लिकेट पंक्तियों के कॉलम डेटा को छिपाने के लिए SQL सर्वर क्वेरी। डुप्लिकेट पंक्ति को हटाना नहीं चाहते

  4. अद्यतन करें और एक तालिका को दूसरे से सम्मिलित करें

  5. SQL सर्वर बिजनेस इंटेलिजेंस डेवलपमेंट स्टूडियो की स्थापना