Hallo zusammen,
ich habe folgende Daten:
Projektnr - Status - Datum
212 - 1 - 27.06.2016
212 - 1 - 28.06.2016
212 - 2 - 05.09.2016
212 - 1 - 20.09.2016
214 - 1 - 27.06.2016
214 - 1 - 28.06.2016
214 - 1 - 29.06.2016
214 - 2 - 09.08.2016
214 - 3 - 26.08.2016
---------------------------
create table test
(projektnr varchar2(50) NOT NULL, status number(10) NOT NULL, datum date default(sysdate));
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('27.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('28.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 2, to_date('05.09.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('20.09.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('27.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 1, to_date('28.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 1, to_date('29.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 2, to_date('09.08.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 3, to_date('26.08.2016', 'dd.MM.YYYY'))
---------------------------
und möchte nun den ersten Datensatz in der Gruppe (Projektnr und Status sortiert nach Datum) feststellen.
Ergebnis dafür sollte so aussehen:
Projektnr - Status - Datum
212 - 1 - 27.06.2016
212 - 2 - 05.09.2016
212 - 1 - 20.09.2016
214 - 1 - 27.06.2016
214 - 2 - 09.08.2016
214 - 3 - 26.08.2016
Leider bekomme ich mit meinem Code:
SELECT projektnr,
status,
datum,
ROW_NUMBER ()
OVER (PARTITION BY projektnr, status ORDER BY projektnr, datum)
rnum
FROM (SELECT *
FROM ( SELECT ROW_NUMBER ()
OVER (PARTITION BY projektnr, status
ORDER BY projektnr, datum, status)
nr,
projektnr,
status,
datum
FROM test
ORDER BY projektnr, status, datum)
WHERE nr = 1)
dieses Ergebnis:
Projektnr - Status - Datum
212 - 1 - 27.06.2016
212 - 2 - 05.09.2016
214 - 1 - 27.06.2016
214 - 2 - 09.08.2016
214 - 3 - 26.08.2016
Also 5 Datensätze anstatt 6 und es fehlt mir noch die Zeile mit dem Datum 20.09.2016.
Für jeden Vorschlag und Lösung wäre ich sehr dankbar.
Grüße
Ianras
ich habe folgende Daten:
Projektnr - Status - Datum
212 - 1 - 27.06.2016
212 - 1 - 28.06.2016
212 - 2 - 05.09.2016
212 - 1 - 20.09.2016
214 - 1 - 27.06.2016
214 - 1 - 28.06.2016
214 - 1 - 29.06.2016
214 - 2 - 09.08.2016
214 - 3 - 26.08.2016
---------------------------
create table test
(projektnr varchar2(50) NOT NULL, status number(10) NOT NULL, datum date default(sysdate));
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('27.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('28.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 2, to_date('05.09.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('20.09.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (212, 1, to_date('27.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 1, to_date('28.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 1, to_date('29.06.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 2, to_date('09.08.2016', 'dd.MM.YYYY'))
insert into test (projektnr, status, datum) VALUES (214, 3, to_date('26.08.2016', 'dd.MM.YYYY'))
---------------------------
und möchte nun den ersten Datensatz in der Gruppe (Projektnr und Status sortiert nach Datum) feststellen.
Ergebnis dafür sollte so aussehen:
Projektnr - Status - Datum
212 - 1 - 27.06.2016
212 - 2 - 05.09.2016
212 - 1 - 20.09.2016
214 - 1 - 27.06.2016
214 - 2 - 09.08.2016
214 - 3 - 26.08.2016
Leider bekomme ich mit meinem Code:
SELECT projektnr,
status,
datum,
ROW_NUMBER ()
OVER (PARTITION BY projektnr, status ORDER BY projektnr, datum)
rnum
FROM (SELECT *
FROM ( SELECT ROW_NUMBER ()
OVER (PARTITION BY projektnr, status
ORDER BY projektnr, datum, status)
nr,
projektnr,
status,
datum
FROM test
ORDER BY projektnr, status, datum)
WHERE nr = 1)
dieses Ergebnis:
Projektnr - Status - Datum
212 - 1 - 27.06.2016
212 - 2 - 05.09.2016
214 - 1 - 27.06.2016
214 - 2 - 09.08.2016
214 - 3 - 26.08.2016
Also 5 Datensätze anstatt 6 und es fehlt mir noch die Zeile mit dem Datum 20.09.2016.
Für jeden Vorschlag und Lösung wäre ich sehr dankbar.
Grüße
Ianras