首页 文章

将两列加入新列

提问于
浏览
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

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

5 回答

  • 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

    试试这个

    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

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

    此解决方案使用 FULL OUTER JOIN ,因此无论记录是否存在于 T1 但不是 T2T2 但不是 T1 ,它都将起作用 . 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 . 如果这不是您想要的结果,请编辑您的问题以包含更多样本数据和完整的所需输出 .

  • 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,表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 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
    

相关问题