JCB: SQL-Abfrage vereinfachen

Beitrag lesen

SELECT 'Hallöchen :)' as BEGRUESSUNG

Ich hab da folgende - stark vereinfachte + verkürzte - verschachtelte Abfrage:

ALTER PROCEDURE dbo.QMTEST_100

@Query varchar(200)

AS
SELECT
      TB_QM_FM.ObjektID as ObjektID,
      TB_QM_FM.KlassenID as KlassenID,

(SELECT RIGHT('000000' + CONVERT(varchar, ISNULL(TB_KUNDEN.KundenNr, 0)), 6)
            + ' - '
            + CASE ISNULL(TB_KUNDEN.NameIntern, '')
              WHEN '' THEN ISNULL(TB_KUNDEN.Name, '')
              ELSE   ISNULL(TB_KUNDEN.NameIntern, '')
                 END
               + CASE ISNULL(TB_KUNDEN.Stammort, '')
              WHEN '' THEN ''
              ELSE ' (' + ISNULL(TB_KUNDEN.Stammort, '') + ')'
              END
    FROM TB_AUFTRAG
    INNER JOIN TB_KUNDEN on TB_KUNDEN.ObjektID = TB_AUFTRAG.ClientID
    AND  TB_KUNDEN.KlassenID = TB_AUFTRAG.Clientklasse
    WHERE TB_AUFTRAG.ObjektID=TB_QM_FM.AuftragID
    AND   TB_AUFTRAG.KlassenID=TB_QM_FM.AuftragCL) as Kunde

FROM TB_QM_FM
  WHERE (SELECT RIGHT('000000' + CONVERT(varchar, ISNULL(TB_KUNDEN.KundenNr, 0)), 6)
            + ' - '
            + CASE ISNULL(TB_KUNDEN.NameIntern, '')
              WHEN '' THEN ISNULL(TB_KUNDEN.Name, '')
              ELSE   ISNULL(TB_KUNDEN.NameIntern, '')
                 END
               + CASE ISNULL(TB_KUNDEN.Stammort, '')
              WHEN '' THEN ''
              ELSE ' (' + ISNULL(TB_KUNDEN.Stammort, '') + ')'
              END
    FROM TB_AUFTRAG
    INNER JOIN TB_KUNDEN on TB_KUNDEN.ObjektID = TB_AUFTRAG.ClientID
    AND  TB_KUNDEN.KlassenID = TB_AUFTRAG.Clientklasse
    WHERE TB_AUFTRAG.ObjektID=TB_QM_FM.AuftragID
    AND   TB_AUFTRAG.KlassenID=TB_QM_FM.AuftragCL) LIKE '%' + LTRIM(RTRIM(@Query)) + '%'

return

Jetzt meine Frage: wie kann ich diese Abfrage so vereinfachen, ohne dass ich die komplette Unterabfrage für die Spalte Kunde noch mal in der WHERE-Klausel angeben muß?? Die Hauptabfrage besteht nämlich noch aus weiteren u.U. noch komplizierteren Unterabfragen (welche dann auch LIKE @Query sein müssen). Somit muß ich immer alles doppelt schreiben. Mit weiteren (inner/outer) Joins in der Hauptabfrage gehts scheinbar nicht, weil sich die verschiedenen Relationen ins Gehege kommen. Ich habs zumindest nicht hinbekommen.

Für jegliche Anregung oder Lösung wär ich dankbar :).

Gruß,

Jan