2017-06-02 73 views
0

如何组合table1和table2的COLUMN2?将两列加入新列

SELECT COLUMN1, COLUMN2 FROM TABLE1 
C1 C2 
A 1 


SELECT COLUMN1, COLUMN2 FROM TABLE2 
C1 C2 
A 1 
B 2 
C 2 


C1 C2 C3 
A 1 1 
B 2 0 
C 2 0 

我想有一个第三列上COLUMN1结合两个表碱的列2,其具有A,B的值,C.然后,如果它在两个表中的空值应为0请参阅第三样品样本结果。

+0

添加(d,3)表1,和(e,4)表2,并相应地调整结果。 – jarlh

+0

我不明白你的答案。 – Potatooo

+0

这不是一个答案。问题不清楚,但如果你按照我的提示,它会变得更容易理解它。 – jarlh

回答

0

因此,您希望根据关键列COLUMN1匹配两个表中的记录。如果只有一个表格显示该记录。 COLUMN3指示密钥是否存在于两个表中。

该解决方案使用FULL OUTER JOIN,所以它会工作中是否存在T1记录但不T2T2但不T1coalesce()函数显示第一个非空参数。

SELECT coalesce(t1.COLUMN1, t2.COLUMN1) as COLUMN1 
     , coalesce(t1.COLUMN2, t2.COLUMN2) as COLUMN2 
     , case when t1.COLUMN1 is not null 
        and t2.COLUMN1 is not null then 1 else 0 end as COLUMN3 
FROM TABLE1 t1 
    full outer join TABLE2 t2 
    on t1.COLUMN1 = t2.COLUMN1 

假设。此查询忽略t1.COLUMN1 = t2.COLUMN1t1.COLUMN2 != t2.COLUMN2的情况。它只会在结果集中显示t1.COLUMN2。如果这不是您想要的结果,请**编辑您的问题**以包含更多样本数据和完整的必需输出。

+0

这是有效的!谢谢 – Potatooo

0

这就是你必须寻找

SELECT tbl1.C1, 
     tbl2.C2, 
     [C3] = 
(
    SELECT CASE 
       WHEN tbl1.C2 Is Null OR tbl2.C2 is null 
       THEN 0 
       ELSE 1 
      END 
) 
FROM tbl1 
    INNER JOIN tbl2 ON tbl1.C1 = tbl2.C1; 
0

为了避免混乱,可以说TABLE_1有2列(C1,C2)和TABLE_2有2列(C3,C4)。我只是改名列TABLE_2 1 & 2列3 & 4.

从我从你想在结果TABLE_2的所有记录与包含基于TABLE_1 C3列值的新列沿着你的问题明白了什么。

的需要Table_1 right outer join Table_2与NVL显示0针对其值丢失在TABLE_1(B & C)

完整查询是如下

SELECT Y.COLUMN_3, Y.COLUMN_4, NVL (X.COLUMN_2, 0) 
FROM TABLE_1 X RIGHT OUTER JOIN TABLE_2 Y ON (X.COLUMN_1 = Y.COLUMN_3); 

希望这回答您的查询。请标记接受的答案,如果这能解决您的问题。

0

尝试这个

select table2.c1, 
     table2.c2, 
case when table1.c2 is null or 
table2.c2 is null 
then 0 else 1 end c3 
from table1,table2 where table1.c1(+)=table2.c1; 
0

请试试这个代码...

select dbo.Table_2.C1, 
     dbo.Table_2.C2, 
     [C3] = (select Case when dbo.Table_1.C2 = dbo.Table_2.C2 then 1 else 0 end) 
from dbo.Table_2 
left join dbo.Table_1 on dbo.Table_1.C1 = dbo.Table_2.C1