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

वास्तविक जीवन का उदाहरण, SQL में OUTER / CROSS APPLY का उपयोग कब करें

कुछ APPLY के लिए उपयोग करता है हैं...

1) शीर्ष एन प्रति समूह प्रश्न (कुछ कार्डिनैलिटी के लिए अधिक कुशल हो सकते हैं)

SELECT pr.name,
       pa.name
FROM   sys.procedures pr
       OUTER APPLY (SELECT TOP 2 *
                    FROM   sys.parameters pa
                    WHERE  pa.object_id = pr.object_id
                    ORDER  BY pr.name) pa
ORDER  BY pr.name,
          pa.name 

2) बाहरी क्वेरी में प्रत्येक पंक्ति के लिए तालिका मान फ़ंक्शन को कॉल करना

SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)

3) कॉलम उपनाम का पुन:उपयोग करना

SELECT number,
       doubled_number,
       doubled_number_plus_one
FROM master..spt_values
CROSS APPLY (SELECT 2 * CAST(number AS BIGINT)) CA1(doubled_number)  
CROSS APPLY (SELECT doubled_number + 1) CA2(doubled_number_plus_one)  

4) स्तंभों के एक से अधिक समूह को अनपिवट करना

मान लें कि 1NF तालिका संरचना का उल्लंघन कर रहा है....

CREATE TABLE T
  (
     Id   INT PRIMARY KEY,

     Foo1 INT, Foo2 INT, Foo3 INT,
     Bar1 INT, Bar2 INT, Bar3 INT
  ); 

2008+ VALUES . का उपयोग करने वाला उदाहरण वाक्य रचना।

SELECT Id,
       Foo,
       Bar
FROM   T
       CROSS APPLY (VALUES(Foo1, Bar1),
                          (Foo2, Bar2),
                          (Foo3, Bar3)) V(Foo, Bar); 

2005 में UNION ALL इसके बजाय इस्तेमाल किया जा सकता है।

SELECT Id,
       Foo,
       Bar
FROM   T
       CROSS APPLY (SELECT Foo1, Bar1 
                    UNION ALL
                    SELECT Foo2, Bar2 
                    UNION ALL
                    SELECT Foo3, Bar3) V(Foo, Bar);


  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 सर्वर CRUD संचालन

  2. एसक्यूएल, परिणामों को कैसे संयोजित करें?

  3. Azure SQL डेटाबेस व्यवस्थापन युक्तियाँ और संकेत परीक्षा (DP-300)

  4. सशर्त एकत्रीकरण प्रदर्शन

  5. ExecuteNonQuery:कनेक्शन गुण प्रारंभ नहीं किया गया है।