2016-12-20 20 views
0

我试图将多个项目的多个现金流量表合并到一个使用SQL的表中。我使用下面列出的查询,SQL外部加入不同时间的数据的时间序列

SELECT a.DATE1, b.DATE2, a.CF1, b.CF2 
FROM a 
FULL OUTER JOIN b 
ON b.DATE2= a.DATE1 

,结果下面的表格中列出,

enter image description here

由于现金流发生在不同日期为不同的项目,其中一些可能发生在同一天,有些可能不会。我想知道我怎么能调整我的代码,这样结果会是这样,

enter image description here

如果我们结合前2个日期列。如果另一个为NULL,则保留日期值,如果现金流量在同一天发生,则删除重复的值。

由于有多个项目需要进行组合,因此该方法应该对扩展很有用。

我曾尝试使用以下,

SELECT ISNULL(a.DATE1, '') + ISNULL(b.DATE2, ''), a.CF1, b.CF2 
FROM ... 

然而,这仅仅解决了NULL的一部分,实际上加起来重复的日期,并导致新的日期。

任何帮助表示赞赏,并提前感谢!

+0

'COALESCE(a.Date1,b.Date2)'可以帮助 – 1000111

+0

MySQL不支持'FULL OUTER JOIN'据我所知,所以我不知道你如何实际产生的第一个表。 –

+0

我正在使用Microsoft SQL Server Mgmt Studio,因此这可能与MySQL不同? –

回答

1

尝试使用coalesce()。

 SELECT coalesce(a.DATE1, b.DATE2)as date, a.CF1, b.CF2 
     FROM a 
     FULL OUTER JOIN b 
     ON b.DATE2= a.DATE1 
+0

这个功能太棒了!谢谢! –

+0

此外,我对SQL很新,我想知道如何在需要时找到像COALESCE这样的函数?有没有一个地方可以去搜索这样的所有功能,还是必须在这里发布问题? –

+0

你可以通过阅读一些SQL电子书或教科书轻松找到这些,你也可以参考在线教程,如http://www.w3schools.com/sql/或www.tutorialspoint.com/sql –