SQL完全外部联接

SQL完全外部联接,sql,join,Sql,Join,我试图编写一个join语句,将以下三个数据集连接在一起。(这是使用MS SQL Server) 第1组 身份证日期Col1 1月11日a1 1月13日a2 第2组 身份证日期Col2 1月11日b1 1月15日b2 第三组 身份证日期Col3 1月15日c1 1月17日c2 组合集 ID日期Col1 Col2 Col3 1月11日a1 b1 1月13日a2 1月15日b2 c1 1月17日c2 我认为完全外部联接可以做到这一点,但我遇到了主要的跨产品问题。根据您的数据集,您似乎希望根据日期列联接

我试图编写一个join语句,将以下三个数据集连接在一起。(这是使用MS SQL Server)

第1组 身份证日期Col1 1月11日a1 1月13日a2 第2组 身份证日期Col2 1月11日b1 1月15日b2 第三组 身份证日期Col3 1月15日c1 1月17日c2 组合集 ID日期Col1 Col2 Col3 1月11日a1 b1 1月13日a2 1月15日b2 c1 1月17日c2
我认为完全外部联接可以做到这一点,但我遇到了主要的跨产品问题。

根据您的数据集,您似乎希望根据
日期列联接3个表。请注意,我在这里忽略ID列,直到您澄清为什么所有ID都设置为1

SELECT ISNULL(set1.dt, ISNULL(set2.dt, set3.dt)) as 'Date', col1, col2, col3
FROM set1
FULL OUTER JOIN set2 ON CAST(set1.dt AS DATE) = CAST(set2.dt AS DATE)
FULL OUTER JOIN set3 ON CAST(set2.dt AS DATE) = CAST(set3.dt AS DATE)
尝试一下:

select coalesce(t1.date, t2.date, t3.date) date, col1, col2, col3 from table1 t1
full outer join table2 t2 on (t1.date = t2.date)
full outer join table3 t3 on (t2.date = t3.date)

选择ISNULL(a.ID,ISNULL(b.ID,c.ID))ID,coalesce(a.dt,b.dt,c.dt),Col1,Col2,Col3
来自SET1A
a.dt=b.dt上的完全外部连接集2 b
b.dt=c.dt上的完全外部连接设置3 c

您遇到了哪些主要的跨产品问题?这种数据结构和组合数据令人困惑。所有行的ID都相同吗?与这些集合相关的FK是什么?你尝试过什么?你收到了什么问题?同意。不过,我想他不需要结果表中的ID。来添加一些细节。我只包含了一个ID,事实上有很多ID。我正在查看医疗数据,所以ID是PatientID。集合1是处方,因此日期是用药开始日期。第2组是实验室结果,因此日期是观察日期。集合3是约会日期是约会日期。我正在尝试获取一组完整的数据以生成一些报告。请参阅顶部的注释,解释ID。
select coalesce(t1.date, t2.date, t3.date) date, col1, col2, col3 from table1 t1
full outer join table2 t2 on (t1.date = t2.date)
full outer join table3 t3 on (t2.date = t3.date)