2012-02-05 11 views
5

मैं डेटा फॉर्म 3 टेबल (दिनांक और qty) पुनर्प्राप्त करता हूं, कुछ डेटा ओवरलैप हो सकता है लेकिन यह सुनिश्चित नहीं है कि कौन सी टेबल। उदाहरण के लिए कुछ दिनों के टेबल t1 और t2 में ओवरलैप हो सकता है लेकिन नहीं t3, या t2 और t3 नहीं बल्कि t1 या t1 और T3 में लेकिन में नहीं t2 मेंएसक्यूएल आंशिक रूप से ओवरलैपिंग डेटा के लिए शामिल हों

अगर मैं प्रदर्शन एक पूर्ण में शामिल होने के मैं बहुत से अंत नल और तीन अलग-अलग दिनांक कॉलम।

मैं प्रारूप में डेटा कैसे प्राप्त कर सकता हूं: date,qty1, qty2, gty3 जहां [date] में सभी दिन 3 टेबल होते हैं? यह सच है - शून्य सब शून्य मान

07/02/2012 || 2 || 0 || 7 


CREATE TABLE t1 (
    [date] [nvarchar](10) 
    ,qtyt1 [int] 
) 

CREATE TABLE t2 (
    [date] [nvarchar](10) 
    ,qtyt2 [int] 
) 

CREATE TABLE t3 (
    [date] [nvarchar](10) 
    ,qtyt3 [int] 
) 


insert into t1 values ('05/02/2012', 2) 
insert into t1 values ('07/02/2012', 3) 
insert into t2 values ('06/02/2012', 4) 
insert into t2 values ('08/02/2012', 5) 
insert into t3 values ('07/02/2012', 7) 
insert into t3 values ('08/02/2012', 11) 


select * from t1 
full join t2 on t1.date = t2.date 
full join t3 on t2.date = t3.date 

उत्तर

5
SELECT COALESCE(t1.date, t2.date, t3.date) AS date, 
     qtyt1, 
     qtyt2, 
     qtyt3 
FROM t1 
     FULL JOIN t2 
     ON t1.date = t2.date 
     FULL JOIN t3 
     ON ISNULL(t2.date, t1.date) = t3.date 
+0

सम्मिलित और isnull ... – ErikE

+0

@ErikE मिश्रण के लिए उत्सुक की जगह लेंगे। मैं 'ISNULL' तक डिफ़ॉल्ट हूं जब तक कि 2 से अधिक पैरामीटर या 'COALESCE' को प्राथमिकता देने के किसी अन्य कारण को नहीं। –

+0

यह काम करता है, धन्यवाद – witpo

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