Hallo Jo,
ich denke die Ursache ist einfach zu erkären. Ich denke du gehst davon aus, dass es F05323692 nur mit Status R gibt. Real gibt es ihn mind. zwei mal. Den ursprünglichen Datensatz bei Auslieferung mit Status S und dann ein- oder mehrfach als Repaartur mit Status R. Beachtet werden soll aber nur der letzte, aktuellste Datensatz
Ändere ich das
SQL auf
Code:
SELECT SerNr, Typ, Status,
case
when LAG(status,1,'R') OVER(ORDER BY SerNR) = status
then LAG(SerNR) OVER(ORDER BY SerNR)
else serNr
end AS GroupedSerNr
FROM (select * from Ser_nr where ID in (SELECT Max(S1.ID) AS MaxID
FROM Ser_Nr AS S1
WHERE s1.SerNr BETWEEN 'F05323690' AND 'F05323694'
GROUP BY S1.SerNr)) y
) x
group by GroupedSerNr, Typ, Status
order by GroupedSerNr
funktioniert es mit dem
SQL auch.
Code:
F05323690 MLC10U100 S 2
F05323692 MLC10U100 R 1
F05323693 MLC10U100 S 2
Erweitere ich aber den Ser-Nr. Bereich z.B. auf
BETWEEN 'F05323690' AND 'F05323700' sieht das Ergebnis so aus
Code:
F05323690 MLC10U100 S 2
F05323692 MLC10U100 R 1
F05323693 MLC10U100 S 2
F05323694 MLC10U100 S 1
F05323695 MLC10U100 S 1
F05323696 MLC10U100 S 1
F05323697 MLC10U100 S 1
F05323698 MLC10U100 S 1
F05323699 MLC10U100 S 1
F05323700 MLC10U100 S 1
Korrekt wäre
Code:
F05323690 MLC10U100 S 2
F05323692 MLC10U100 R 1
F05323693 MLC10U100 S 8