Du verwendest ziemlich ungleiche Sachen, z.B. "0 AS Autrag..." oder "IS NULL". Warum das alles ? Dann noch was, was man nie machen sollte, z.B.: "auftrag.KZ_Status="Ware in Reparatur", also direkte String-Vergleiche in der
DB. Noch nie gesehen so was.
Bei einem Union muß alles die gleiche Struktur haben. Da jetzt einem Datum eine 0 vorzugaukeln o.ä., ich weiß nicht, ob das was wird.
Versuche besser eine einheitliche Linie da rein zu kriegen und die Statements so kurz wie möglich zu machen. Spalte notfalls alles in ein paar Stored Procedures auf und behandele dann erst die Rückgabewerte. Denn selbst, wenn das irgendwann auf diese Weise geht, dann weißt Du in kurzer Zeit nicht mehr warum überhaupt und es geht wieder von Vorne los.