将两列加入新列

时间:2017-06-02 07:24:23

标签: sql oracle

如何组合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

我希望第三列结合两个表的column2,基于column1,其值为A,B,C。然后,如果它在任一个表中为空,则值应为0请参阅第三个样本以获取样本结果。< / p>

5 个答案:

答案 0 :(得分:0)

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

此解决方案使用FULL OUTER JOIN,因此无论T1中是否存在记录,但T2T2T1中存在记录,它都会有效。 coalesce()函数显示第一个非null参数。

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。如果这不是您想要的结果,请**编辑您的问题**以包含更多样本数据和完整的所需输出。

答案 1 :(得分: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;

答案 2 :(得分:0)

为避免混淆,假设table_1有2列(C1,C2),table_2有2列(C3,C4)。我刚刚改名为第1列和第1列。表2中的2到第3列&amp; 4。

根据我从您的问题中所理解的,您希望结果中的table_2的所有记录以及包含来自基于table_1的c3列的值的新列。

要求Table_1 right outer join Table_2,NVL显示0,表1中缺少哪个值(B&amp; 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);

希望这可以回答您的问题。如果这样可以解决您的问题,请标记答案。

答案 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;

答案 4 :(得分: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