2015-03-27 2 views
0

У меня есть таблица с данными автомобиля пробега, выбор этой таблицы выглядит следующим образом:проблемы с соединением двух таблиц правильно

enter image description here

Это дает за машину, за месяц существующего значения. Проблема, которую я сейчас испытываю, заключается в том, что мне нужно, чтобы каждый месяц составлял ряд автомобилей. Теперь это только показывает ряд автомобилей, если автомобиль имеет пробег в этом месяце. Я хочу, чтобы у автомобиля была строка для каждого месяца, с текущими данными или просто значениями NULL.

Для этого я составил список с идентификатором автомобиля в месяц, вот код для этого и того, как он выглядит.

, carMonthList as (
SELECT 
    M.MonthDate 
, difflist.FK_CarID as fkc 
FROM 
    carMKcombiDiffList as difflist cross join 
    MonthList M 
) 

Небольшая проблема, которую он делает (количество месяцев) раз подряд за автомобиль в течение месяца.

enter image description here

Тогда я пытаюсь совместить таблицу с данными автомобиля и стол с автомобилем в месяц данных с использованием 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 для данных автомобиля? enter image description here

+0

Я сократить набор данных и обновлять фотографии для 1 автомобиля – Robin

+0

Самый простой и безопасный способ заключается в создании месяцев таблицы, перекрестное соединение это к автомобильным столам и левым, присоединитесь к своим автомобилям ежемесячные данные к этим столам - таким образом, у вас есть запись для каждого автомобиля и каждый месяц. – Arvo

+0

Я сделал это, но потом у меня не было месячной строки за каждый месяц за автомобиль. Только когда были данные о машине за этот месяц – Robin

ответ

Смежные вопросы