Hallo Zusammen,
ich benötige eine SQL-Abfrage die mir ausgibt wie oft ein Arbeitsgang bei der gleichen Kostenstelle + Arbeitsplatz nach einander bearbeitet wird.
das ist meine aktuelle Abfrage
das Problem bei dieser Abfrage ist das der Counter (tmp_id) nicht resetet wird(siehe Beispiel)
aktueller Zustand:
ID | ARTIKELNUMMER | ARBEITSPLANTNR | KOSTENSTELLE | ARBEITSPLATZ | ARBEITSGANG | ANZAHL
agpos_ID | (aplidentnr) | (aplnr) | (kostst) | (arbplatz) |(agpos) | tmp_id
1 | 123456 | 111111 | 200 | 100 | 10 | 1
2 | 123456 | 111111 | 200 | 100 | 20 | 2
3 | 123456 | 111111 | 300 | 100 | 30 | 1
4 | 123456 | 111111 | 300 | 111 | 40 | 1
5 | 123456 | 111111 | 200 | 100 | 50 | 3
6 | 123456 | 111111 | 200 | 100 | 60 | 4
7 | 123456 | 111111 | 300 | 100 | 70 | 2
gewünschter Zustand
ID | ARTIKELNUMMER | ARBEITSPLANTNR | KOSTENSTELLE | ARBEITSPLATZ | ARBEITSGANG | ANZAHL
agpos_ID | (aplidentnr) | (aplnr) | (kostst) | (arbplatz) |(agpos) | tmp_id
1 | 123456 | 111111 | 200 | 100 | 10 | 1
2 | 123456 | 111111 | 200 | 100 | 20 | 2
3 | 123456 | 111111 | 300 | 100 | 30 | 1
4 | 123456 | 111111 | 300 | 111 | 40 | 1
5 | 123456 | 111111 | 200 | 100 | 50 | 1
6 | 123456 | 111111 | 200 | 100 | 60 | 2
7 | 123456 | 111111 | 300 | 100 | 70 | 1
Wenn jemand einen Tipp hätte, würde ich mich sehr freuen.
ich benötige eine SQL-Abfrage die mir ausgibt wie oft ein Arbeitsgang bei der gleichen Kostenstelle + Arbeitsplatz nach einander bearbeitet wird.
das ist meine aktuelle Abfrage
SQL:
select
main.aplidentnr,
main.aplnr,
main.kostst,
main.arbplatz,
main.tmp_id as Anzahl
from
(select
aplidentnr,
aplnr,
agpos,
kostst,
ARBPLATZ,
row_number() OVER (PARTITION BY aplnr ORDER BY aplidentnr, agpos) agpos_id,
row_number() OVER (PARTITION BY aplnr, kostst, arbplatz ORDER BY aplidentnr, agpos) tmp_id
from
DEMO.ARBEITSPLAN) main
left join
(select
aplidentnr,
aplnr,
agpos,
kostst,
ARBPLATZ,
row_number() OVER (PARTITION BY aplnr ORDER BY aplidentnr, agpos) agpos_id,
row_number() OVER (PARTITION BY aplnr, kostst, arbplatz ORDER BY aplidentnr, agpos) tmp_id
from
DEMO.ARBEITSPLAN) sub on (main.aplnr=sub.aplnr and main.agpos_id=sub.agpos_id-1)
where
main.aplnr
in
(select
aplnr
from
DEMO.Fertigungsauftrag
where
Fertigungsauftrag.fi_nr = '1' and
Fertigungsauftrag.datneu >= to_date(sysdate-730, 'DD.MM.YY'))
order by Main.aplidentnr,main.aplnr,Main.agpos
das Problem bei dieser Abfrage ist das der Counter (tmp_id) nicht resetet wird(siehe Beispiel)
aktueller Zustand:
ID | ARTIKELNUMMER | ARBEITSPLANTNR | KOSTENSTELLE | ARBEITSPLATZ | ARBEITSGANG | ANZAHL
agpos_ID | (aplidentnr) | (aplnr) | (kostst) | (arbplatz) |(agpos) | tmp_id
1 | 123456 | 111111 | 200 | 100 | 10 | 1
2 | 123456 | 111111 | 200 | 100 | 20 | 2
3 | 123456 | 111111 | 300 | 100 | 30 | 1
4 | 123456 | 111111 | 300 | 111 | 40 | 1
5 | 123456 | 111111 | 200 | 100 | 50 | 3
6 | 123456 | 111111 | 200 | 100 | 60 | 4
7 | 123456 | 111111 | 300 | 100 | 70 | 2
gewünschter Zustand
ID | ARTIKELNUMMER | ARBEITSPLANTNR | KOSTENSTELLE | ARBEITSPLATZ | ARBEITSGANG | ANZAHL
agpos_ID | (aplidentnr) | (aplnr) | (kostst) | (arbplatz) |(agpos) | tmp_id
1 | 123456 | 111111 | 200 | 100 | 10 | 1
2 | 123456 | 111111 | 200 | 100 | 20 | 2
3 | 123456 | 111111 | 300 | 100 | 30 | 1
4 | 123456 | 111111 | 300 | 111 | 40 | 1
5 | 123456 | 111111 | 200 | 100 | 50 | 1
6 | 123456 | 111111 | 200 | 100 | 60 | 2
7 | 123456 | 111111 | 300 | 100 | 70 | 1
Wenn jemand einen Tipp hätte, würde ich mich sehr freuen.