连接三个表,每个表都有一组彼此不完整的键

时间:2014-01-16 23:35:09

标签: tsql

我有三个表(实际上是临时表,每个表都是其他查询的结果),具有非常相似的数据集;我需要“凝聚”,因为缺乏一个更好的术语,而我有限的SQL知识阻止了我。

例如,我们有代码预算,代码估算和代码实际。并非所有可能的代码值都存在于三者中的任何一个中,甚至也不存在于另一个可访问的表中。

Budgets
1  $13
2  $22
4  $44
7  $71

Estimates
1  $14
4  $49
5  $55

Actuals
2  $21
3  $33
5  $57
7  $70

我想要的是什么:

Code   Bgt   Est   Act
 1      13    14     0
 2      22     0    21
 3       0     0    33
 4      44    49     0
 5       0    55    57
 7      71     0    70

(当没有价值时我没有0,这只是为了说明目的。)

我根本不知道如何处理这个问题 - 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

Try using Full Outer Join, In your case query will look like -

Select ISNULL(Bgt.Code,ISNULL(EST.Code,Act.Code)) AS Code, 
   ISNULL(Bgt.Budget,0) AS Bgt,
   ISNULL(Est.Estimate,0) AS Est,
   ISNULL(Act.Actual,0) AS Bgt   
FROM Budget Bgt   
FULL OUTER JOIN Estimates Est ON Est.Code=Bgt.Code
FULL OUTER JOIN Actuals Act  ON Act.Code=bgt.Code