J'ai essayé de trouver quelque chose ici mais je n'ai pas trouvé mon cas d'utilisation. J'espère que vous pourrez m'aider. Tout d'abord ma table qui est disponible :
NOMBRE DE STATIONS
PART_NO
DATE_DU_LIVRE
11111
A
2021-08-01 6:00:00
11111
A
2021-08-01 6:05:00
11111
A
2021-08-01 6:07:00
11111
A
2021-08-01 6:08:00
11111
B
2021-08-01 7:10:00
11111
B
2021-08-01 7:13:00
11111
B
2021-08-01 7:15:00
11111
B
2021-08-01 7:25:00
11111
A
2021-08-01 8:10:00
11111
A
2021-08-01 8:12:00
11111
A
2021-08-01 8:16:00
11111
A
2021-08-01 8:19:00
22222
A
2021-08-01 6:00:00
22222
A
2021-08-01 6:05:00
22222
A
2021-08-01 6:07:00
22222
A
2021-08-01 6:08:00
22222
B
2021-08-01 7:10:00
22222
B
2021-08-01 7:13:00
22222
B
2021-08-01 7:15:00
22222
B
2021-08-01 7:25:00
22222
A
2021-08-01 8:10:00
22222
A
2021-08-01 8:12:00
22222
A
2021-08-01 8:16:00
22222
A
2021-08-01 8:19:00
Résultat suivant ce que je veux obtenir :
NOMBRE DE STATIONS
PART_NO
DATE_DU_LIVRE_DE_DÉBUT
END_BOOK_DATE
11111
A
2021-08-01 6:00:00
2021-08-01 6:08:00
11111
B
2021-08-01 7:10:00
2021-08-01 7:25:00
11111
A
2021-08-01 8:10:00
2021-08-01 8:19:00
22222
A
2021-08-01 6:00:00
2021-08-01 6:08:00
22222
B
2021-08-01 7:10:00
2021-08-01 7:25:00
22222
A
2021-08-01 8:10:00
2021-08-01 8:19:00
J'ai essayé de résoudre le problème avec cette requête, mais je n'ai pas obtenu les résultats escomptés.
SELECT PART_NO,
STATION_NUMBER,
GROUP_NUMBER,
MIN(BOOK_DATE) START_BOOK_DATE,
MAX(BOOK_DATE) END_BOOK_DATE
FROM(
SELECT PART_NO,
STATION_NUMBER,
BOOK_DATE,
IS_CHANGED,
RANK() OVER (ORDER BY PART_NO,IS_CHANGED) GROUP_NUMBER
FROM(
SELECT PART_NO,
STATION_NUMBER,
BOOK_DATE,
CASE
WHEN NOT LEAD(PART_NO, 1) OVER (ORDER BY BOOK_DATE) = PART_NO
THEN ROWNUM
ELSE 0
END IS_CHANGED
FROM PROD_DATA
WHERE STATION_NUMBER in ('11111','22222')
AND BOOK_DATE BETWEEN TO_TIMESTAMP('01.08.2021 05:00:00', 'DD.MM.YYYY HH24:MI:SS') and TO_TIMESTAMP('01.08.2021 12:00:00', 'DD.MM.YYYY HH24:MI:SS')
ORDER BY BOOK_DATE
)ORDER BY BOOK_DATE
) GROUP BY STATION_NUMBER, PART_NO, GROUP_NUMBER
Je dois regrouper par numéro de station et numéro de pièce, mais j'ai besoin de la première et de la dernière date du livre d'un point de vue chronologique. Le changement de PART_NUMBER et/ou STATION_NUMBER est le déclencheur du calcul de la nouvelle ligne.