क्या मैं कई "के साथ" का उपयोग कर सकता हूं?


199

सिर्फ उदाहरण के लिए:

With DependencedIncidents AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
)

With lalala AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
)

... काम नहीं करता। "त्रुटि पास के साथ"।

इसके अलावा, मैं पहले सेकंड के साथ अंदर का उपयोग करना चाहता हूं। क्या यह वास्तविक है या मुझे अस्थायी तालिकाओं का उपयोग करने की आवश्यकता है?


1
BOL का सटीक सिंटैक्स भी है। msdn.microsoft.com/en-us/library/ms175972%28v=SQL.100%29.aspx नोटिस [ ,...n ]
एक CVn

जवाबों:


343

प्रयत्न:

With DependencedIncidents AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
),
lalala AS
(
    SELECT INC.[RecTime],INC.[SQL] AS [str] FROM
    (
        SELECT A.[RecTime] As [RecTime],X.[SQL] As [SQL] FROM [EventView] AS A 
        CROSS JOIN [Incident] AS X
            WHERE
                patindex('%' + A.[Col] + '%', X.[SQL]) > 0
    ) AS INC
)

और हाँ, आप सामान्य टेबल एक्सप्रेशन परिभाषा के अंदर कॉमन टेबल एक्सप्रेशन का संदर्भ दे सकते हैं। यहां तक ​​कि पुनरावर्ती भी। जिसके चलते कुछ बहुत ही साफ सुथरी चालें चलती हैं


30
उन लोगों के लिए जो इसे तुरंत खुद की तरह नोटिस नहीं करते थे, यहाँ पकड़ने वाला बयान के साथ मूल के बाद अल्पविराम जोड़ रहा है .. lol
CRSouser

11
और withफिर से शब्द नहीं लिख रहा है
user230910

नमस्ते, यह दो टेबल के बीच एक क्रॉस जॉइन के बराबर है। या यह दो अलग-अलग तालिकाओं का निर्माण करता है। मैं दो बहुत बड़ी तालिका में शामिल नहीं होना चाहूंगा, क्या कुशलतापूर्वक "टेबल" के साथ दो अलग-अलग बनाने का एक तरीका है
लॉन्ग ले

1
@LongLe नहीं, वे जुड़ने के बराबर नहीं हैं और वे टेबल नहीं हैं। ये सीटीई - कॉमन टेबल एक्सप्रेशन हैं। वे अधिक पसंद हैं ... नामांकित क्वेरीज़ जिनका आप उपयोग कर सकते हैं जैसे कि वे टेबल थे ... या अधिक पसंद किए गए विचार। कृपया उन्हें गूगल करें। वे साफ-सुथरे हैं। यह सबसे अच्छी मानक SQL विशेषताओं में से एक है, जो जटिल प्रश्नों को समझने और नियंत्रण में रखने में बहुत मदद करती है।
टोमेक स्ज़ापोविकेज़

उन लोगों के लिए जो 'सामान्य टेबल एक्सप्रेशन' नहीं जानते हैं, वे दिए गए उदाहरण में 'डिपेंडेड इंसीडेंट्स' और 'लालाला' हैं। विस्तार से देखने के लिए, डॉक्स.माइक्रोसॉफ्ट / एएनयू- एससीएल / टीटी- एसक्यूएल / इंक्रीज / ... देखें ।
हेनरी यांग

110

हां - बस इसे इस तरह से करें:

WITH DependencedIncidents AS
(
  ....
),  
lalala AS
(
  ....
)

आपको WITHकीवर्ड दोहराने की आवश्यकता नहीं है


13
क्या लाला डिपेंडेड इंसीडेंट्स का उपयोग कर सकते हैं?
ब्रेन

क्या डिपेंडेड इंसीडेंट्स लैला का उपयोग कर सकते हैं?
हेनरी यांग

3
@ हेनरीयांग: नहीं - बाद में सीटीई ( lalala) इससे पहले परिभाषित किसी भी सीटीई का उपयोग कर सकता है - लेकिन पहले वाला एक सीटीई का उपयोग नहीं कर सकता है जो केवल बाद में परिभाषित होने जा रहा है ....
marc_s
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.