2011-10-21 14 views
6

संपादित करें के साथ दो समान तालिका संरचनाओं में शामिल हों: COALESCE विधि का प्रयास करने के बाद, अब मुझे एक समस्या दिखाई दे रही है जहां डेटा प्रत्येक वाट श्रेणी के लिए समान डेटा के साथ दोहरा रहा है। कॉलम 2 वेटेज है। enter image description hereविभिन्न डेटा

मैंने दो सारणी सारणी बनाई हैं, दोनों सटीक तालिका संरचना के साथ। इन तालिकाओं में, कई कॉलम होते हैं जिनमें समान मान हो सकते हैं, और उसके बाद कुछ मान कॉलम होंगे जिनमें अलग-अलग संख्याएं होंगी। इनमें से कुछ एक कॉलम में न्यूल होंगे, और दूसरे में शून्य नहीं होंगे। मैं सभी मूल्यों को एक साथ प्राप्त करना चाहता हूं, और उसी साइट और पौधे के साथ पंक्तियों पर मैं मूल्यों को शामिल करना चाहता हूं।

SITE  PLANT   VALUE_1   VALUE 2 
S1  P1    54    66 
S1  P2    43    43 

तालिका 2::

SITE  PLANT   VALUE_1   VALUE_2 
S1  P1   33    43 
S2  P1   34    22 

परिणाम:

यहाँ दो तालिकाओं की तरह लग सकता है और परिणाम मैं उम्मीद थी

table1 का एक उदाहरण है

SITE  PLANT   t1_VALUE_1 t1_VALUE_2 t2_VALUE_1  t2_VALUE2 
S1  P1   54   66   33    43 
S1  P2   43   43   NULL   NULL 
S2  P1   NULL   NULL   34    22 

मेरा मूल विचार एक पूर्ण शामिल हो जाएगा। हालांकि, यह काम नहीं करता है क्योंकि आपके चयन कथन में आपको यह निर्दिष्ट करना होगा कि कॉलम को साइट और प्लांट की तरह कहां से पकड़ना है; लेकिन t1.site और t2.site दोनों का चयन करने के लिए दो कॉलम उत्पन्न होंगे। मुझे सबसे नज़दीकी चीज नीचे दी गई क्वेरी थी, हालांकि कभी भी एस 2 में परिणाम होता है जिसमें साइट और प्लांट एस 1 में नहीं होता है, आपको एस 1 और एस 2 के लिए शून्य मान मिलते हैं।

SELECT t1.Site, t1.Plant, t1.Value_1, t1.Value_2, t2.Value_1, t2.Value_2 
FROM table1 t1 
FULL JOIN table2 t2 
ON t1.site = t2.site 
AND t1.plant = t2.plant 
+0

HTML मार्कअप का उपयोग न करें। संरक्षित रिक्त स्थान के साथ तालिका पेस्ट करने के लिए "कोड के रूप में प्रारूप" आइकन का उपयोग करें। –

+0

@Tom - S1 और S2 को स्तंभ या तालिका के रूप में सूचीबद्ध नहीं किया गया है। आप वास्तव में क्या कह रहे हैं? –

उत्तर

1

आप coalesce का उपयोग कर सकते हैं। यह पैरामीटर से पहला गैर शून्य मूल्य वापस करेगा।

SELECT coalesce(t1.Site, t2.Site) as Site, coalesce(t1.Plant, t2.Plant) as Plant, 
4

इस क्वेरी को पूरा करने के लिए दो चाल की आवश्यकता है। पहला एक पूर्ण जॉइन है। एक पूर्ण जुड़ाव आपको दोनों टेबलों को गठबंधन करने की अनुमति देगा, और जब आप जॉइन स्थिति से मेल नहीं खाते तो किसी भी तालिका में नल डालें। दूसरा COALESCE है, जो आपको टेबल और जो भी टेबल से लेता है, वह परिणाम में इस पंक्ति के लिए रिकॉर्ड प्रदान करता है।

SELECT Coalesce(t1.Site,t2.Site) As Site, COALESCE(t1.Plant, t2.Plant) As Plant, 
    t1.Value_1 As t1_Value_1, t1.Value_2 As t1_Value_2, 
    t2.Value_1 As t2_Value_1, t2.Value_2 As t2_Value_2 
FROM Table1 t1 
FULL JOIN Table2 t2 ON t1.Site = t2.Site AND t1.Plant = t2.Plant 
+0

इनपुट के लिए धन्यवाद, मुझे coalesce फ़ंक्शन पर स्मार्ट प्राप्त करने की आवश्यकता है। कृपया अद्यतन प्रश्न देखें – Tom

संबंधित मुद्दे