У меня есть таблица 1, и мне нужен запрос для заполнения таблицы 2:
Проблема здесь с столбцом даты. Я хочу знать процесс совмещения местоположения/партнера в день. Основная проблема здесь заключается в том, что я не могу выбрать DateCreated и сделать ее датой по умолчанию, поскольку она не обязательно охватывает весь диапазон дат, как в этом примере, где нет 2015-01-07 и 2015-01-09. Тот же случай с другими датами.
Итак, моя идея состоит в том, чтобы сначала выбрать даты из некоторой таблицы, которая содержит необходимый диапазон дат, а затем выполнить расчет для каждой комбинации дня/местоположения/партнера из cte, но в этом случае я не могу понять, как сделать объединение для LocationId и PartnerId .
Столбцы:
- Date - CreatedItems - количество созданных элементов, где Table1.DateCreated = Table2.Date
- DeliveredItems — количество доставленных товаров, где Table1.DateDateOut = Table2.Date
- CycleTime – количество дней, в течение которых доставленный товар находился в этом месте (DateOut – DateIn + 1).
Я начал с чего-то вроде этого, но очень похоже, что я полностью упустил из виду:
with d as
(
select date from DimDate
where date between DATEADD(DAY, -365, getdate()) and getdate()
),
cr as -- created items
(
select
DateCreated,
LocationId,
PartnerId,
CreatedItems = count(*)
from Table1
where DateCreated is not null
group by DateCreated,
LocationId,
PartnerId
),
del as -- delivered items
(
select
DateOut,
LocationId,
ParnerId,
DeliveredItems = count(*),
CycleTime = DATEDIFF(Day, DateOut, DateIn)
from Table1
where DateOut is not null
and Datein is not null
group by DateOut,
LocationId,
PartnerId
)
select
d.Date
from d
LEFT OUTER JOIN cr on cr.DateCreated = d.Date -- MISSING JOIN PER LocationId and PartnerId
LEFT OUTER JOIN del on del.DateCompleted = d.Date -- MISSING JOIN PER LocationId and PartnerId