2013-02-20 120 views
11

मैं निम्नलिखितएसक्यूएल में एक उप क्वेरी का पुन: उपयोग कैसे करें?

select columns 
from (select columns1 
     from result_set 
     where condition_common and condition1) as subset1 
     join 
     (select columns2 
     from result_set 
     where condition_common and condition2) as subset2 
     on subset1.somekey = subset2.somekey 

जैसी क्वेरी मैं किसी भी तरह पुन: उपयोग करने

select columns 
from result_set 
where condition_common 

मैं ऊपर क्वेरी oversimplified है चाहते है, लेकिन इसके बाद के संस्करण वास्तव में चयन विशाल और जटिल है। मैं यह सुनिश्चित करने का बोझ नहीं चाहता कि दोनों सिंक में हैं

मेरे पास प्रोग्रामेटिक रूप से इसका पुन: उपयोग करने का कोई साधन नहीं है। टी-एसक्यूएल से इंकार कर दिया गया है। मैं केवल सरल प्रश्न लिख सकता हूं। यह एक ऐप सीमा है।

वहाँ एक भी बयान

+0

तक PLSQL मैं केवल क्षमता का मतलब चर, प्रक्रियाओं आदि का उपयोग करने के लिए इसके लिए सही लिंगो क्या है? – Schu

+0

धन्यवाद। इसे ठीक किया – Schu

+0

संभावित डुप्लिकेट [सबक्वायरी का पुन: उपयोग करना संभव है?] (Https://stackoverflow.com/questions/2686919/is-possible-to-reuse-subqueries) –

उत्तर

21

उपयोग एक Common Table Expression (CTE) में, एक ही सबक्वेरी पुन: उपयोग करने आप एसक्यूएल सर्वर 2005+ उपयोग कर रहे हैं एक रास्ता है:

with cte as (
     select columns 
     from result_set 
     where condition_common 
    ) 
select columns 
from cte as subset1 
     join 
     cte as subset2 
     on subset1.somekey = subset2.somekey 
where otherconditions 
+0

बहुत बहुत धन्यवाद। इससे मेरा एलओसी लगभग 40% कम हो गया। – Schu