Not sure if this is the best way of of achieving it, but it works. I created the following table to put your example data into:
CREATE TABLE DATE_RESULT(
ITEM_ID INT,
DATE_COL DATE,
RESULT_COL VARCHAR2(255 CHAR)
);
Then ran this query:
SELECT ITEM_ID FROM(
SELECT
ITEM_ID,
TO_CHAR(DATE_COL,'DD-MON-YYYY') AS DATE_COL,
RESULT_COL,
LAG(ITEM_ID,1,NULL) OVER (ORDER BY ITEM_ID ASC, DATE_COL ASC) AS LAST_ITEM_ID,
LAG(ITEM_ID,2,NULL) OVER (ORDER BY ITEM_ID ASC, DATE_COL ASC) AS LAST_ITEM_ID2,
LAG(TO_CHAR(DATE_COL,'DD-MON-YYYY'),1,NULL) OVER (ORDER BY ITEM_ID ASC, DATE_COL ASC) AS LAST_DATE,
LAG(TO_CHAR(DATE_COL,'DD-MON-YYYY'),2,NULL) OVER (ORDER BY ITEM_ID ASC, DATE_COL ASC) AS LAST_DATE2,
LAG(RESULT_COL,1,NULL) OVER (ORDER BY ITEM_ID ASC, DATE_COL ASC) AS LAST_RESULT,
LAG(RESULT_COL,2,NULL) OVER (ORDER BY ITEM_ID ASC, DATE_COL ASC) AS LAST_RESULT2
FROM
DATE_RESULT
)
WHERE
ITEM_ID = LAST_ITEM_ID
AND ITEM_ID = LAST_ITEM_ID2
AND TO_DATE(DATE_COL)-1 = TO_DATE(LAST_DATE)
AND TO_DATE(DATE_COL)-2 = TO_DATE(LAST_DATE2)
AND RESULT_COL = LAST_RESULT
AND RESULT_COL = LAST_RESULT2;
The query uses Oracle's LAG() function to get the values from previous rows. So in this example, LAST_ITEM_ID is the item ID from the previous row, and LAST_ITEM_ID is the item ID from 2 rows previous.
In the WHERE clause I make sure that the ITEM_ID matches the previous two ITEM_IDs and that the RESULT_COL matches the previous two RESULT_COLs. I also make sure that the last two dates were consecutive.