使用空白SQL填充连接表

时间:2015-07-20 12:04:21

标签: oracle-sqldeveloper

我对SQL比较陌生,所以请保持温和!我有一个表,按月保存特定结构元素的状态列表。这只保存状态已更改的记录(例如同意),因此我缺少什么时候没有启动的信息(由于表中没有任何操作,因此表中不存在) 。基本上我想将此连接到另一个保存日期的表,这样如果没有记录,则用空白填充状态。

例如,表A包含状态

Cycle ID ....  Status  
69082 ............2  
80412 ............3  

表B包含日期

Cycle ID..... Date  
69082 ..........October 2013  
75520 ..........November 2013  
80045 ..........December 2013  
80412 ..........January 2014  

所以我想要的输出就是这样的(所以表B中的所有内容都有记录,而表A中的某些内容并不存在空白状态):

Cycle ID .... Date .... Status  
69082 ........Oct 13.....2  
75520 ........Nov13.....' '  
80045 ........Dec13 ....' '  
80412 ........Jan14 .....3  

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

我认为表A中的正确联接会为您提供这些列

答案 1 :(得分:0)

您可以使用Case-Then-Else语句

Select 
  tb.cycleid ,
  tb.date ,
  Case 
    When tb.status is Null Then ''
    Else tb.status /* cast to string! */
  End as status
From tableB tb left outer join tableA ta on ta.cycleid=tb.cycleid

根据您的数据库,您必须转换为字符串状态值。例如,在sql server中,您可以在CAST(tb.status as varchar(3))部分使用Else

查看join-clause。上述查询将获得具有date的所有周期。如果表B中的周期没有数字(没有日期),它将不会出现在结果中。也许你需要使用distinct来重复不要有多个日期的循环。