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

टेबल ऑपरेटर का उपयोग कब करें APPLY

सबसे पहले - apply के साथ आप टेबल-मूल्यवान फ़ंक्शन को कॉल कर सकते हैं जहां आपके द्वारा क्वेरी की गई तालिका से पैरामीटर मान लिए गए हैं, कुछ इस तरह:

select
    t1.col3, -- column from table
    f1.col1  -- column from function
from table1 as t1
    left outer join table2 as t2 on t2.col1 = t1.col1
    outer apply dbo.function1(t1.col1, t2.col2) as f1

या xml कॉलम को तोड़ना

select
    t1.col3,
    t.c.value('@value', 'int') as value
from table1 as t1
    -- table1.col1 is xml iike <Data @Value="...">...</Data>
    outer apply t1.col1.nodes('Data') as t(c) 

मेरे समाप्त होने के बाद, apply बहुत उपयोगी होता है जब आपको कुछ पूर्व-गणना करना होता है :

select
    t1.col3,
    a1.col1,  --calculated value
    a2.col1   -- another calculated value, first one was used
from table1 as t1
    outer apply (select t1.col1 * 5 as col1) as a1
    outer apply (select a1.col1 - 4 as col1) as a2

apply . का उपयोग करने का एक और उदाहरण अनपिवट है ऑपरेशन:

select
    t1.col1, c.name, c.value
from table1 as t1
    outer apply (
        select 'col1', t1.col1 union all
        select 'col2', t1.col2
    ) as c(name, value)

अंत में, यह रही आपकी क्वेरी लागू करें . का उपयोग किए बिना SQL 2005 के संदर्भ में लागू किया गया :

;with cte as (
    select
        y.Name, 
        y.hoursWorked,
        x.game,
        x.NumBets,
        row_number() over(partition by x.Name order by x.NumBets) as row_num
    from y
        left outer join x on x.Name = y.Name
)
select Name, hoursWorked, game, NumBets
from cte
where row_num <= 2
order by Name, NumBets desc

देखें sql fiddle उदाहरण




  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. tsql एक स्ट्रिंग के अंदर की अंतिम घटना

  3. सबक्वेरी और सहसंबद्ध सबक्वेरी के बीच अंतर

  4. SQL सर्वर 2012 में चर तालिका के लिए रोलबैक क्यों काम नहीं कर रहा है?

  5. इतिहास को बनाए बिना परिवर्तित क्षेत्रों को ट्रैक करना