2013-01-21 70 views
0

创建第三个表我有一个看起来像下面的2个不同的表:加入/合并两个表中的SQL

--------Table 1--------------------------------------------------------- 
Cat1   Cat2   Cat3  Value1 
a        d1   13 
b    e1       13 
a    e2    d1   13 
c        d2   13 
a    e1       13 
a        d1   13 
--------Table 2 ------------------------------------------------- 
Cat1   Cat2   Cat3  Value2  
a    e2    d1   113 
c        d2   132  
a        d1   134 
a        d1   131 
b    e1       113 
a    e1       133 

的CAT1和CAT2上面表是相同的,但可能无法在相同的顺序。我想结合这两个表的上方,使得所需的表看起来像以下:

--------Desired Table--------------------------------------------------------- 
Cat1   Cat2   Cat3  Value1  Value2 
a        d1   13  134 
b    e1       13  113 
a    e2    d1   13  113 
c        d2   13  132 
a    e1       13  113 
a        d1   13  134 

我使用SYBASE明显的是旧版本。

谢谢!

回答

0

就试试这个(从我的ANSI SQL经验):

SELECT a.cat1, 
      a.cat2, 
      a.cat3, 
      a.value1, 
      b.value2 
    FROM tab1 a 
    LEFT OUTER JOIN 
     (SELECT cat1, 
       cat2, 
       cat3, 
       max(value2) value2 
     FROM tab2 
     GROUP BY cat1, 
       cat2, 
       cat3) b ON a.cat1 = b.cat1 
    AND a.cat2 = b.cat2 
    AND a.cat3 = b.cat3; 
0

你的意思是?

INSERT INTO table3 (Cat1,Cat2,Cat3,Value1,Value2) 
SELECT t1.Cat1, t1.Cat2, t1.Cat3, t1.Value1, t2.value2 
FROM table1 as t1, table2 as t2 
where t1.Cat1 = t2.Cat2 
+0

你的意思t1.Cat1 = t2.Cat1?如果是这种情况,那么为什么我们不需要在表t1和t2之间的Cat2和Cat3上有任何条件。此外上面看起来像一个内部连接,它不适用于Cat1,Cat2,Cat3的条件。 – Zanam