我有一张包含汽车里程数据的表格,该表格的选择如下:
每辆车每月给出现有价值。我现在遇到的问题是我需要每个月都有一排车。现在它只显示一个汽车排,如果汽车在上个月有里程数。我想要它,以便汽车每个月都有一行,当前数据或只有NULL值。
要做到这一点,我已经制作了一个每月带有车ID的列表,下面是代码和它的外观。
, carMonthList as (
SELECT
M.MonthDate
, difflist.FK_CarID as fkc
FROM
carMKcombiDiffList as difflist cross join
MonthList M
)
他为一个月的汽车连续做了几个小时的问题。
然后我尝试使用UNION将表格与汽车数据和表格与汽车每月数据相结合。以下是代码和示例结果:
, 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月看到这一点,它有两行,每一行都有一行。我无法通过检查两个日期来过滤它们,因为它会删除所有空日期。如何/我应该如何解决这个问题,同时保持每个月的行与汽车数据的NULL值?