自定义选择语句

时间:2014-07-31 15:33:13

标签: sql oracle

下面有两个表中的数据。

表A:

C1|C2
------
A|1   
B|2

表B:

C1|C4
-------
A|1
B|1

输出应该具有表A中的主键C1和C2以及表B中的C3,如下所示。

C1|C2|C4
---------
A|NULL|NULL
B|2|1

要实现此目的,基本查询将如下所示。任何人都可以告诉我,如果我们只使用一个case语句就可以放两个列名。

select A.C1, 
       case when A.C2<>B.C4 then A.C2 end as "C2", 
       case when A.C2<>B.C4 then B.C4 end as "C4" 
 from A, B 
  where A.C1=B.C1;

在上面,为了从两个表中获得第二列,我使用相同的case语句两次。是否有另一种方式以更简化的方式实现此输出?

提前致谢。

1 个答案:

答案 0 :(得分:0)

你可以尝试

select A.C1, case when A.C2<>B.C4 then A.C2 || " " || B.C4 end as "C2-C4" 
from A, B 
where A.C1=B.C1;

这将为您提供一个包含两个值的列,但如果您需要单独的列,则不需要保留原样。