thnks
Attached File(s)
-
exemple.png (9.27K)
Number of downloads: 0
Posted 21 April 2012 - 02:03 PM
exemple.png (9.27K)
Posted 22 April 2012 - 11:52 AM
SELECT id,
absent,
MIN(date) AS start_date,
MAX(date) AS end_date
FROM your_table
GROUP BY id,
absent
Posted 22 April 2012 - 12:59 PM
exemple3.png (15.2K)
Posted 22 April 2012 - 11:11 PM
CREATE TABLE your_table (
ID NUMBER(9),
absent VARCHAR2(5),
date_field DATE
);
INSERT INTO your_table (ID, absent, date_field) VALUES (11, 'oui', to_date('12022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (11, 'oui', to_date('13022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (11, 'oui', to_date('14022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (11, 'oui', to_date('15022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (11, 'oui', to_date('25022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (12, 'oui', to_date('12022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (12, 'oui', to_date('13022012', 'ddmmyyyy'));
INSERT INTO your_table (ID, absent, date_field) VALUES (12, 'oui', to_date('14022012', 'ddmmyyyy'));
COMMIT;
WITH succesive_marker_date AS (
SELECT id,
absent,
date_field,
date_field + row_number () over (ORDER BY id, absent, date_field DESC) marker_date
FROM your_table
ORDER BY ID, date_field
)
SELECT ID,
absent,
MIN (date_field) start_date,
MAX (date_field) end_date
FROM succesive_marker_date
GROUP BY ID, absent, marker_date;
ID ABSENT START_DATE END_DATE
---------- -------------------- ---------- ----------
11 oui 12-02-2012 15-02-2012
11 oui 25-02-2012 25-02-2012
12 oui 12-02-2012 14-02-2012
Posted 22 April 2012 - 11:32 PM
SELECT ID,
absent,
MIN (date_field) start_date,
MAX (date_field) end_date
FROM (SELECT id,
absent,
date_field,
date_field + ROWNUM * -1 AS marker_date
FROM your_table
)
GROUP BY ID, absent, marker_date
Posted 26 April 2012 - 03:32 AM
Hans_vd, on 23 April 2012 - 12:32 AM, said:
SELECT ID,
absent,
MIN (date_field) start_date,
MAX (date_field) end_date
FROM (SELECT id,
absent,
date_field,
date_field + ROWNUM * -1 AS marker_date
FROM your_table
)
GROUP BY ID, absent, marker_date
Posted 26 April 2012 - 04:00 AM