Guten Tag
Mit folgendem Statement erhalte ich eine Liste mit Datum, TotalOperationen und AnzahlParallelOPs, aber nur die welche in AnzahlParallelOPs nicht NULL sind. Ich möchte nun alle anzeigen lassen, welche in TotalOperationen etwas enthalten. Dort wo AnzahlParallelOPs nichts enthält entweder NULL oder eine '0'. Ist das möglich mit einem LEFT JOIN? Aber wo und wie? Für Hilfe bin ich dankbar
Freundliche Grüsse
Walo Beck
with cte as (
select OPDATUM, TS_INVORBEREIT,TS_PATABGABE, row_number() over (order by TS_INVORBEREIT) as Row
from ISMEDEOPPS_OP I
WHERE OPDatum >= '20120101' AND OPDatum <='20120104' AND GELOESCHT = 'N' AND (GESTRICHEN = '' OR GESTRICHEN IS NULL) AND ((substring(TS_INVORBEREIT,9,4) >= 2000 and substring(TS_INVORBEREIT,9,4) <= 2359) OR (substring(TS_INVORBEREIT,9,4) >= 0000 and substring(TS_INVORBEREIT,9,4) <= 0659)) AND I.PROTOERFASSOK ='3' AND ASAN <>''
)
select cast(C1.OPDATUM as Date) as OPDATUM
, (select COUNT(I1.OPDATUM) from ISMEDEOPPS_OP I1
WHERE I1.OPDatum >='20120101' AND I1.OPDatum <='20120104' AND I1.GELOESCHT = 'N' AND (I1.GESTRICHEN = '' OR I1.GESTRICHEN IS NULL) AND ((substring(I1.TS_INVORBEREIT,9,4) >= 2000 and substring(I1.TS_INVORBEREIT,9,4) <= 2359) OR (substring(I1.TS_INVORBEREIT,9,4) >= 0000 and substring(I1.TS_INVORBEREIT,9,4) <= 0659)) AND I1.PROTOERFASSOK ='3' AND I1.ASAN <>''
AND C1.OPDATUM=I1.OPDATUM
) as TotalOperationen
, COUNT(C1.Row) AS AnzParalleleOPs
from cte c1
inner join cte c2
ON c1.OPDATUM = c2.OPDATUM and c1.Row = c2.Row - 1 and c2.TS_INVORBEREIT < c1.TS_PATABGABE
GROUP BY C1.OPDATUM
ORDER BY OPDATUM