Sql 即使其中一方的两个表都为null,完全联接不应该同时得到两个表吗
这不是完整查询它是较大查询中的子查询。然而,我知道这是导致我出现问题的部分,因为我已经拥有了它并将其来源于它。我试图得到两个表的两侧,它们并不总是有匹配的组合键。特别是,GKey并不总是相同的 我目前正在使用完全联接,但两边仍然有间隙。有一个例子说明了数据应该如何从本质上得到。您可以看到,两个不同表的两侧都有空值Sql 即使其中一方的两个表都为null,完全联接不应该同时得到两个表吗,sql,sql-server,subquery,Sql,Sql Server,Subquery,这不是完整查询它是较大查询中的子查询。然而,我知道这是导致我出现问题的部分,因为我已经拥有了它并将其来源于它。我试图得到两个表的两侧,它们并不总是有匹配的组合键。特别是,GKey并不总是相同的 我目前正在使用完全联接,但两边仍然有间隙。有一个例子说明了数据应该如何从本质上得到。您可以看到,两个不同表的两侧都有空值 Input | A | B | | 2 | NULL | | NULL | 5 | | 3 | 3 | |Null | 6 |
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
因为您是从BFact中选择,然后在完全联接之后在内部联接中使用GFact,所以您将完全联接转换为内部联接,因为不会返回不满足最后一个内部联接的结果 您可以将最后一个内部联接转换为左外部联接,以获得所需的结果