Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 即使其中一方的两个表都为null,完全联接不应该同时得到两个表吗_Sql_Sql Server_Subquery - Fatal编程技术网

Sql 即使其中一方的两个表都为null,完全联接不应该同时得到两个表吗

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

这不是完整查询它是较大查询中的子查询。然而,我知道这是导致我出现问题的部分,因为我已经拥有了它并将其来源于它。我试图得到两个表的两侧,它们并不总是有匹配的组合键。特别是,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

因为您是从BFact中选择,然后在完全联接之后在内部联接中使用GFact,所以您将完全联接转换为内部联接,因为不会返回不满足最后一个内部联接的结果

您可以将最后一个内部联接转换为左外部联接,以获得所需的结果