2017-09-29 11 views
0

Ich habe diese UnterabfrageVerwenden Alias ​​oder Klausel

LEFT MERGE JOIN 
    (SELECT SOURCERECID,TAXITEMGROUP,TAXCODE,GENERALJOURNALACCOUNTENTRY,VOUCHER,TAXAMOUNT,TAXAMOUNTCUR FROM ##TGJAE) TTRIVA ON TT.VOUCHER = TTRIVA.VOUCHER 
    AND TT.SOURCERECID = TTRIVA.SOURCERECID 
    AND TT.TAXITEMGROUP = TTRIVA.TAXITEMGROUP 
    AND (TTRIVA.TAXCODE LIKE 'RIVA%') 
    OR (TTRIVA.TAXCODE LIKE 'RISR%') 
    OR (TTRIVA.TAXCODE LIKE 'IEPSCUOTAP') 
    OR (TTRIVA.TAXCODE LIKE 'IEPS25AP')           
    OR (TTRIVA.TAXCODE LIKE 'IEPS8AP') 
    AND TTRIVA.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 

Ich möchte wissen, ob seine mögliche Alias ​​jeder OR Klausel wie anwenden:

AND (TTRIVA.TAXCODE LIKE 'RIVA%') AS RIVA 
    OR (TTRIVA.TAXCODE LIKE 'RISR%') AS RISR 
    OR (TTRIVA.TAXCODE LIKE 'IEPSCUOTAP') AS IEPSCUOTAP 
    OR (TTRIVA.TAXCODE LIKE 'IEPS25AP') AS IEPS25AP          
    OR (TTRIVA.TAXCODE LIKE 'IEPS8AP') AS IEPS8AP 

Gibt es eine Möglichkeit, dies zu tun?

+0

mmm ... Aliase für Spalten hilft, keine Bedingungen. – dotNET

+0

aber es gibt keine Möglichkeit, das zu implementieren, um es zu benennen und in einen anderen Teil der Abfrage zu verwenden? @ dotNET – Ledwing

+0

Nein, du kannst nicht! Und warum willst du das sowieso? –

Antwort

0

Alias's sind für temporäre Namen für Ergebnisse gedacht, die nur in diesem Fall verwendet werden. Sieht so aus, als ob du das am besten mit einem Objekt behandeln würdest, das manipuliert werden kann.

Können Sie mehr Informationen darüber geben, warum Sie dies tun möchten?

Ich möchte diese in einen anderen Teil der Abfrage tun, denn ich rufe TTRIVA.TAXCODE aber ich kann nicht verschieden, was TTRIVA.TAXCODE Ich nenne es das, was dieses 5

Basiert weg sein kann Es scheint, als ob Sie nur ein bestimmtes Datenfeld zurückgeben möchten, während Sie mehrere Daten erfassen. Dies wird am besten mit einem Objekt oder in dem System durchgeführt, das die Informationen verwendet (oder separate Abfragen durchführt).

Es gibt auch einige Probleme mit Ihren Bedingungen. Ich würde empfehlen, wenn möglich, Klammern zu verwenden, um das gewünschte Ergebnis deutlicher zu machen.

Hier ein Beispiel:

LEFT MERGE JOIN 
(SELECT 
    SOURCERECID, 
    TAXITEMGROUP, 
    TAXCODE, 
    GENERALJOURNALACCOUNTENTRY, 
    VOUCHER,TAXAMOUNT, 
    TAXAMOUNTCUR 
    FROM ##TGJAE) AS TTRIVA 
ON TT.VOUCHER = TTRIVA.VOUCHER 
    AND TT.SOURCERECID = TTRIVA.SOURCERECID 
    AND TT.TAXITEMGROUP = TTRIVA.TAXITEMGROUP 
    AND TTRIVA.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 
    AND (
     TTRIVA.TAXCODE LIKE 'RIVA%' 
     OR TTRIVA.TAXCODE LIKE 'RISR%' 
     OR TTRIVA.TAXCODE LIKE 'IEPSCUOTAP' 
     OR TTRIVA.TAXCODE LIKE 'IEPS25AP'           
     OR TTRIVA.TAXCODE LIKE 'IEPS8AP' 
    ) 

der Rest des Codes Unter der Annahme korrekt ist, sollte diese Arbeit. Wenn wir uns den unteren Abschnitt anschauen, werden Sie Daten für jeden passenden Steuercode (RIVA%, RISR%, IEPSCUOTAP, IEPS25AP und IEPS8AP) erfassen. Wenn Sie nur einen der Steuercodes möchten, würde ich separate Abfragen empfehlen und diese nur bei Bedarf ausführen.

Hoffnung, dass

+0

Ich möchte dies tun, weil in einem anderen Teil der Abfrage ich 'TTRIVA.TAXCODE' rufe, aber ich kann nicht unterscheiden, was' TTRIVA.TAXCODE' Ich kann es nennen, was auch immer das sein mag 5 – Ledwing

+0

In diesem Sinne sollten diese getrennt sein verbindet. Sie sollten nicht alle zur gleichen Zeit zusammenfallen. Partitionieren und sortieren Sie Ihre Abfrage neu. Wenn Sie im Detail erklären, was Sie erreichen möchten, kann ich wahrscheinlich helfen, etwas davon zu schreiben :) – Seeds

+0

Die Hauptantwort wurde aktualisiert. Benutzte eine längere Schreibweise als benötigt, um bei der Erklärung zu helfen. GL. – Seeds

Verwandte Themen