Я не видел никакой цели для полей someVal1, someVal2 и someVal3, поэтому я их пропустил. Я использовал автономный номер в качестве первичного ключа вместо вашего поля даты / времени; но этот подход также должен работать с вашим первичным ключом даты / времени. Это данные в моей версии вашей таблицы.
pkey_field target
1 A
2 A
3 A
4 B
5 B
6 A
Я использовал коррелированный подзапрос, чтобы найти предыдущее значение поля pkey_field для каждой строки.
SELECT
m.pkey_field,
m.target,
(SELECT Max(pkey_field)
FROM YourTable
WHERE pkey_field < m.pkey_field)
AS prev_pkey_field
FROM YourTable AS m;
Затем поместите это в подзапрос, который я присоединил к другой копии базовой таблицы.
SELECT
sub.pkey_field,
sub.target,
sub.prev_pkey_field,
prev.target AS prev_target
FROM
(SELECT
m.pkey_field,
m.target,
(SELECT Max(pkey_field)
FROM YourTable
WHERE pkey_field < m.pkey_field)
AS prev_pkey_field
FROM YourTable AS m) AS sub
LEFT JOIN YourTable AS prev
ON sub.prev_pkey_field = prev.pkey_field
WHERE
sub.prev_pkey_field Is Null
OR prev.target <> sub.target;
Это результат последнего запроса.
pkey_field target prev_pkey_field prev_target
1 A
4 B 3 A
6 A 5 B