这不是完整查询(它是较大查询中的子查询)。但是,我知道这是导致我出现问题的部分,因为我已经把它自己带到了它的原因。我试图让两个表的两面都不具有匹配的复合键。特别是,GKey并不总是一样。
我目前正在使用完整的联接,但我仍然在双方都有差距。有一个例子说明数据应该如何产生。您可以看到两个不同表的两边都有空值。
Input
| A | B |
| 2 | NULL |
| NULL | 5 |
| 3 | 3 |
|Null | 6 |
Outcome
| A | B |
| 3 | 3 |
SELECT DISTINCT BudgetUnit / (WorkDaysInMonth * 8) AS B
,Unit / (WorkDaysInMonth * 8) AS A
FROM BFact AS BMF
FULL JOIN GFact AS GF ON
BMF.GLKey = GF.GKey
AND
BMF.DKey = GF.DKey
AND GF.AKey = BMF.BKey
AND GF.PKey = BMF.PKey
INNER JOIN DimDate AS DA ON GF.AKey = DA.DateKey
答案 0 :(得分:2)
因为您正在选择FROM BFact,然后在FULL JOIN之后在INNER JOIN中使用GFact,所以您将把FULL JOIN变为INNER JOIN,因为不会返回不满足最后一个INNER JOIN的结果。< / p>
您可以将最后一次INNER JOIN转换为LEFT OUTER JOIN以获得所需的结果。