У меня есть табличное событие с 3 столбцами, и я хотел бы выбрать две последовательные строки одного и того же идентификатора дела с определенными критериями (правилами) следующим образом. У меня есть около 5k + различных идентификаторов дел для выбора на основе заданных критериев, и ниже приведен только пример 2 идентификаторов дел. У меня есть часть кода, чтобы попытаться, однако, застрял, потому что я не знаю, как выбрать обе строки, если выполняются условия.
Правила:
- Если D1 следует за D3, ТО Выберите обе строки
- Если D1 следует за D4, ТО ВЫБЕРИТЕ обе строки
- Если D1 следует за D1, ТО ВЫБЕРИТЕ обе строки
- Если D3 следует за D3, ТО ВЫБЕРИТЕ обе строки
- Если D3 следует за D2, ТО ВЫБЕРИТЕ обе строки
- Если D3 следует за D1, ТО ВЫБЕРИТЕ обе строки
- Остальное Не выбирайте
Событие стола:
caseID D Timestamp
-----------------------------------
1 D1 T1
1 D2 T2
1 D3 T3
1 D1 T4
1 D3 T5
1 D2 T6
1 D1 T7
1 D2 T8
1 D4 T9
2 D2 T1
2 D1 T2
2 D2 T3
2 D3 T4
2 D1 T5
2 D4 T6
2 D5 T7
Ожидаемый результат:
caseID D Timestamp
----------------------------------
1 D2 T2
1 D3 T3
1 D1 T4
1 D3 T5
1 D2 T6
1 D1 T7
2 D2 T1
2 D1 T2
2 D2 T3
2 D3 T4
2 D1 T5
2 D4 T6
Код, который я мог бы попробовать:
SELECT caseID, D, Timestamp
FROM event e1
INNER JOIN event e2 ON e1.caseID = e2.caseID
WHERE
CASE @D
WHEN e1.D = D1 AND e2.D = D3 THEN ?