Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 无法正确连接两个表_Sql_Sql Server 2008 - Fatal编程技术网

Sql 无法正确连接两个表

Sql 无法正确连接两个表,sql,sql-server-2008,Sql,Sql Server 2008,我有一个包含汽车里程数据的表格,该表格的选择如下所示: 它给出了每辆车每月的现有值。我现在的问题是,我需要它每个月都有一辆车。现在,它只显示了一个汽车排,如果汽车在该月有里程数。我希望它能让一辆车每个月都有一行,有当前数据或者只有空值 为了做到这一点,我列出了一个每月的汽车ID清单,下面是它的代码以及它的外观 , carMonthList as ( SELECT M.MonthDate , difflist.FK_CarID as fkc FROM carMKcombi

我有一个包含汽车里程数据的表格,该表格的选择如下所示:

它给出了每辆车每月的现有值。我现在的问题是,我需要它每个月都有一辆车。现在,它只显示了一个汽车排,如果汽车在该月有里程数。我希望它能让一辆车每个月都有一行,有当前数据或者只有空值

为了做到这一点,我列出了一个每月的汽车ID清单,下面是它的代码以及它的外观

,   carMonthList as (
SELECT
    M.MonthDate
,   difflist.FK_CarID as fkc
FROM
    carMKcombiDiffList as difflist cross join
    MonthList M 
)
一个小问题,他为一辆汽车连续一个月出(数月)次

然后我尝试使用UNION将表与car数据以及表与每月car数据结合起来。下面是代码和示例结果:

,   fullList as (
SELECT
    CMlist.MonthDate
,   CMlist.fkc as CarID
,   NULL as beginMonth
,   NULL as KM
,   NULL as diff
,   NULL as CO2
FROM 
    carMonthList as CMlist

UNION

SELECT
    diffList.beginMonth
,   diffList.FK_CarID as CarID
,   diffList.beginMonth
,   diffList.KM
,   diffList.diff
,   diffList.CO2
FROM
    carMKcombiDiffList as diffList
)
这里的问题是,在存在数据的一个月内,他做了两行。您可以在05月份看到这一点,它有两行,一行代表联合体的每一侧。我不能通过检查这两个日期来过滤掉它们,因为这会删除所有的空日期。我如何/应该解决这个问题,同时将每月的行保留为车辆数据的空值?
基于Arvo的建议


下面是一个工作示例

我将缩短数据集并更新pics,用于1个护理最安全的方法是创建月表,交叉连接到cars表,并将您的汽车月数据左连接到这些表-这样您就有了每辆汽车和每个月的可用记录。我这样做了,但我没有每个汽车的每月行。只有当那个月有汽车数据时,就像你做了一个内部连接,而不是外部连接,我会重新生成我的旧代码并再次测试,如果失败,我会报告。