Фильтрация записей при объединении таблиц? - PullRequest
0 голосов
/ 16 января 2020

Моя проблема в том, что после объединения он возвращает дублирующиеся строки с разными 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

Ниже примерный дизайн базы данных для моей проблемы

Rough DbDesign

Это сценарий, созданный мной, я не могу поделиться своим проектом оригинальным запросом и схемой

Sample Data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...