Я собрал запрос, который должен показывать каждую запись, в которой есть события до и после выбранной даты. С добавленным дополнительным столбцом, который будет установлен в True / False, если у записи есть события до даты, и то же самое, если у записи есть события после второй даты.
Проблема в том, что я знаю, что в таблице событий есть записи, в которых есть события до первой даты, а не после второй, но они не отображаются в моем запросе. Только результаты, истинные для обоих, выходят из запроса. Не уверен, что я делаю не так.
SELECT DISTINCT DeviceName,dPhone,DSIMID, Vehicles.reg, DeviceID,
CASE
WHEN EXISTS (SELECT eventID FROM [events] WHERE [events].sysdatetime <
'2018-09-05 11:46:00.000')
THEN 'True' ELSE 'False'
END AS [WasReportingBeforeDate],
CASE
WHEN EXISTS (SELECT eventID FROM [events] WHERE [events].sysdatetime >
'2018-09-05 11:46:00.000')
THEN 'True' ELSE 'False' END AS [WasReportingAfterDate]
FROM [Devices]
INNER JOIN Vehicles ON Vehicles.DevID = Devices.DevID
INNER JOIN [events] ON Devices.DevID = [events].DeviceID;
Пример токового выхода:
Z3243 1 1 AA05 AAA 1 True True
Ожидаемый результат:
Z3243 1 1 AA05 AAA 1 True False
Нет данных для этой записи более поздней, чем вторая дата, поэтому она должна вернуть false