Прежде всего, у меня нет большого опыта работы с SQL, и я потратил много времени, пытаясь заставить его работать.Пожалуйста помоги.
У меня есть исходная таблица из базы данных доступа, которая содержит столбцы: date
, time
, EP
(точка входа), ID
и остальные столбцы являются просто информационными, Нет первичного ключа , Изменение таблицы является последним решением.
DateOS TimeOS EP ID Val1 Val2 Val3 Val4
1.2.2017 1:00:02 in 15 6280 blue line1 s
1.2.2017 3:00:06 in 15 6280 blue line1 s
1.2.2017 4:00:08 in 16 3147 red line2 s
1.2.2017 5:00:10 out 20 6280 white line3 c
1.2.2017 6:00:12 out 20 6280 white line3 c
2.2.2017 2:00:04 in 16 3147 red line2 s
Мне нужно получить только первый (зеленый в ожидаемый результат )
DateOS TimeOS EP ID Val1 Val2 Val3 Val4
1.2.2017 1:00:02 in 15 6280 blue line1 s
1.2.2017 4:00:08 in 16 3147 red line2 s
1.2.2017 5:00:10 out 20 6280 white line3 c
/ последний (красный ожидаемый результат ), в которых встречаются уникальные комбинации EP и ID.
DateOS TimeOS EP ID Val1 Val2 Val3 Val4
1.2.2017 3:00:06 in 15 6280 blue line1 s
1.2.2017 6:00:12 out 20 6280 white line3 c
2.2.2017 2:00:04 in 16 3147 red line2 s
Я получил идеи от: Получить первый экземпляр строки, используя MS Access
Пока у меня есть это (функция min для функции first / max для последней):
SELECT
FORMAT(pt.DateOS, 'dd.MM.yyyy') AS DateOS,
FORMAT(pt.TimeOS, 'HH:mm:ss') AS TimeOS,
pt.EP, pt.ID, pt.Val1, pt.Val2, pt.Val3, pt.val4
FROM [test07_dupl2] AS pt
WHERE TimeOS
IN
(
SELECT
MIN(TimeOS) AS MinDateTimeOS
FROM [test07_dupl2]
GROUP BY EP+ID
)
И это результат .Это касается только TimeOS.Вторая строка там не принадлежит, потому что это более поздняя дата.
DateOS TimeOS EP ID Val1 Val2 Val3 Val4
1.2.2017 1:00:02 in 15 6280 blue line1 s
2.2.2017 2:00:04 in 16 3147 red line2 s
1.2.2017 5:00:10 out 20 6280 white line3 c
Проблема в том, что мне нужно учитывать DateOS + TimeOS
.Поэтому я попытался написать MIN(DateOS + TimeOS)
, а также создать новый столбец со значением DateOS + TimeOS
, но оба возвращали пустую таблицу.Я не уверен, что сделал несколько ошибок, или это неправильный подход.