Моя проблема в том, что после объединения он возвращает дублирующиеся строки с разными Time Periods
. Но я хочу отфильтровать записи и отобразить только те записи, которые попадают под условие CreatedAt
, должно быть между StartTime
и EndTime
.
Мой запрос
WITH TimePeriods
AS
(
SELECT *,
LEAD(StartTime, 1) OVER (ORDER BY StartTime) AS [EndTime]
FROM [TimePeriod]
)
SELECT I.ItemId, I.Amount, TP.TimePeriod
FROM Item AS I
LEFT JOIN Bill AS B ON I.BillId = B.BillId
LEFT JOIN DepartmentTimePeriodRelation AS DTPR ON DTPR.DepartmentId = B.DepartmentId
LEFT JOIN TimePeriods AS TP ON TP.TimePeriodId = DTPR.TimePeriodId
Ниже примерный дизайн базы данных для моей проблемы
Это сценарий, созданный мной, я не могу поделиться своим проектом оригинальным запросом и схемой