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

चुनिंदा क्वेरी में OFFSET-FETCH विकल्पों द्वारा फ़िल्टरिंग - SQL सर्वर / TSQL ट्यूटोरियल भाग 118

परिदृश्य :

आप फ्रंट एंड डेवलपमेंट टीम के साथ SQL सर्वर डेवलपर के रूप में काम कर रहे हैं। फ्रंट एंड टीम को पेजिनेशन लागू करने की आवश्यकता है। पेजिनेशन के बारे में भ्रमित? कोई बात नहीं। अपना बैंक स्टेटमेंट या क्रेडिट कार्ड स्टेटमेंट देखने के बारे में सोचें। जहां एप्लिकेशन प्रति पृष्ठ केवल 10 या 20 रिकॉर्ड दिखाते हैं और आपको अगला रिकॉर्ड देखने के लिए अगला क्लिक करना होता है। इसे पेजिनेशन कहा जाता है। आवश्यक परिणाम लौटाने के लिए उपयोग किया जाना चाहिए और वे रिकॉर्ड वापस करने के लिए पृष्ठ संख्या पास करने में सक्षम होना चाहिए।


समाधान:

पेजिनेशन प्रश्नों को लिखने के कई तरीके हैं, उनमें से एक है OFFSET FETCH क्लॉज का उपयोग करना। यदि आप OFFSET FETCH का उपयोग करना चाहते हैं तो आपको रिकॉर्ड्स को सॉर्ट करना होगा।

आइए dbo.TotalSale तालिका बनाएं और कुछ नमूना रिकॉर्ड डालें। मैंने केवल 11 रिकॉर्ड डाले हैं।

तालिका बनाएं [डीबीओ]। ] [वर्कर] (100) न्यूल, [प्रोडक्टनाम] [वर्कर] (100) न्यूल, [आइटम सोल्ड] [इंट] न्यूल, [सोल्डप्राइस] [फ्लोट] न्यूल, [सोल्डडेट] [डेट] न्यूल, [सिटी] [वर्कर] (100) न्यूल, [स्टेट] [वर्कर] (100) न्यूल, [देश] [वर्कर] (100) न्यूल, [क्षेत्र] [वर्कर] (100) न्यूल) इन्सर्ट [डीबीओ]। [टोटलसेल] ( [आईडी] , [SalePersonFName], [SalePersonLName], [ProductName], [आइटमSold], [SoldPrice], [SoldDate], [City], [State], [देश], [Region] ) Values ​​(1, N'Aamir', N'Shahzad', N'TV', 1,700, CAST(N'2015-07-15' AS DATE), N'Charlotte', N'NC', N'USA', N'North America' , (2, एन'एम', एन'रजा', एन'सेल फोन', 2, 800, कास्ट (एन'2015-07-15' तारीख के अनुसार), एन'चार्लोट', एन'एनसी', एन'यूएसए ', N'North America' ), (3, N'Christy', N'Ladson', N'TV', 3, 1600, C AST(N'2015-04-02' AS DATE), N' High Point', N'NC', N'USA', N'North America' ), (4, N'John', N'Rivers', N'Laptop', 5, 2400, CAST(N'2014-03-09' AS DATE), N'Jersey City', N'NJ', N'USA', N'North America' , ( 5, N 'नजफ', न'अली', एन'कंप्यूटर', 1, 300, कास्ट (एन'2015-06-20' तारीख के अनुसार), एन 'कराची', एन'सिंध', एन'पाकिस्तान', एन'एशिया ' ), (6, एन'सुखजीत', एन'सिंह', एन'टीवी', 2, 900, कास्ट (एन'2015-06-21' तारीख के अनुसार), एन'चंडीगढ़', एन'पंजाब', एन 'इंडिया', एन'एशिया'), (7, एन'चिराग', एन'पटेल', एन'सेल फोन', 5, 1500, कास्ट (एन'2015-06-23' एएस डेट), एन'अहमदाबाद ', एन'गुजरात', एन'इंडिया', एन'एशिया') , (8, एन'अलीना', न'अमन', एन'लैपटॉप', 2, 800, कास्ट (एन'2015-05-25') तारीख के अनुसार), एन'लाहौर', एन'पंजाब', एन'पाकिस्तान', एन'एशिया'), (9, एन'पेट्रा', एन'हेनरी', एन'टीवी', 10, 5000, कास्ट (एन) '2015-04-08' तारीख के अनुसार), एन'पेरिस', एन'ले-डी-फ़्रांस', एन'फ़्रांस', एन'यूरोप' ), (10, एन'रीटा', एन'रोजर', एन 'लैपटॉप', 7, 2100, CAST(N'2015-04-11' AS DATE), N'Paris', N'Île-de-France', N'France', N' Europe' ), ( 11, N'Tamara', N'tony ', एन'सेल फोन', 2, 1200, कास्ट (एन'2015-03-03' तारीख के अनुसार), एन'फ्रैंकफर्ट', एन'हेस्से', एन'जर्मनी', एन'यूरोप')
 
1) मान लें कि अगर हम पहली 5 पंक्तियों को छोड़ना चाहते हैं और बाकी सभी पंक्तियों को दिखाना चाहते हैं तो हम नीचे क्वेरी का उपयोग कर सकते हैं।

चुनें [id] , [SalePersonFName], [SalePersonLName], [ProductName],[ItemsSold], [SoldPrice] dbo से। आईडी OFFSET 5 पंक्तियों द्वारा कुल बिक्री आदेश
पहली X पंक्तियों को छोड़ने और बाकी सभी को दिखाने के लिए SQL सर्वर में OFFSET FETCH क्लॉज का उपयोग कैसे करें - SQL सर्वर ट्यूटोरियल

2) अब अगर हम प्रति पेज 3 रिकॉर्ड दिखाना चाहते हैं, तो हम नीचे दी गई क्वेरी का उपयोग कर सकते हैं। इस मामले में हम पहला पेज दिखाने जा रहे हैं

[id], [SalePersonFName], [SalePersonLName], [ProductName],[ItemsSold], [SoldPrice] को dbo से चुनें। टोटलसेल ऑर्डर आईडी ऑफ़सेट द्वारा 0 पंक्तियाँ केवल अगली 3 पंक्तियाँ प्राप्त करें;

SQL Server - SQL Server Tutorial में प्रति पेज रिकॉर्ड वापस करने के लिए OFFSET FETCH क्लॉज का उपयोग कैसे करें

ध्यान दिया कि मेरे पास OFFSET 0 है, इसका मतलब है कि मैं पहला पृष्ठ और 3 पंक्तियों के साथ दिखाना चाहता हूं। यदि मैं दूसरा पृष्ठ रिकॉर्ड दिखाना चाहता हूं, तो मैं OFFSET 1 पर सेट कर दूंगा, केवल अगली 3 पंक्तियाँ वही रहेगी जो प्रति पृष्ठ केवल 3 पंक्तियाँ दिखाना चाहती है।

हम चर का उपयोग कर सकते हैं ताकि हम क्वेरी में परिवर्तन करने की आवश्यकता नहीं है और चर के मान को बदलकर, हम अपने आवश्यक परिणाम वापस कर सकते हैं। आप नीचे दी गई क्वेरी का उपयोग करके यदि आप चाहें तो संग्रहित प्रक्रिया बना सकते हैं। , [उत्पाद का नाम], [आइटम बेचा गया], [सोल्डप्राइस] आईडी ऑफ़सेट द्वारा कुल बिक्री आदेश OFFSET (@PageNumber-1)*@RowsPerPage ROWS FETCH NEXT @RowsPerPage ROWS केवल;
 
यदि हमें फ़्रंट एंड टीम को संग्रहीत कार्यविधि प्रदान करने की आवश्यकता है, जो प्रत्येक पृष्ठ के लिए पृष्ठ संख्या और पंक्तियों की संख्या स्वीकार करती है, तो आप संग्रहीत प्रक्रिया बनाने के लिए नीचे का उपयोग कर सकते हैं।

प्रक्रिया dbo.sp_GetSaleRecordsPerPage
 @PageNumber int, @RowsPerPage intAS BEGINचुनें OFFSET (@PageNumber-1)*@RowsPerPage ROWS FETCH NEXT @RowsPerPage ROWS केवल;END

मान लें कि यदि हम 4 रिकॉर्ड के साथ दूसरा पृष्ठ वापस करना चाहते हैं, तो हम नीचे दिए गए पैरामीटर मान प्रदान करके dbo.sp_GetSaleRecordsPerPage का उपयोग कर सकते हैं।

EXEC dbo.sp_GetSaleRecordsPerPage 2,4
ऑफसेट FETCH क्लॉज - TSQL ट्यूटोरियल का उपयोग करके SQL सर्वर में पेजिनेशन कैसे करें
 




  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 सर्वर bcp उपयोगिता और संख्यात्मक डेटा प्रकार

  3. pyodbc - बहुत धीमी बल्क इंसर्ट गति

  4. SQL सर्वर डेटाबेस तालिकाएँ निर्यात और आयात के तरीके

  5. SQL सर्वर 2017 में एक संग्रहीत कार्यविधि बनाएँ