我有三个表(实际上是临时表,每个表都是其他查询的结果),具有非常相似的数据集;我需要“凝聚”,因为缺乏一个更好的术语,而我有限的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,这只是为了说明目的。)
我根本不知道如何处理这个问题 - 任何帮助表示赞赏!
答案 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