2016-09-02 3 views
0

Gibt es eine Möglichkeit in TSQL, Variable/Alias ​​in WHERE Klausel zu verwenden?Problemumgehung für Select AS WHERE

Der Grund, den ich frage, ist, wenn ich Auswahlen geschachtelt habe. Muss ich die gesamte geschachtelte SELECT-Anweisung erneut in meine Where-Klausel einfügen, um sie zu filtern?

Antwort

1

Dies ist zu lang für einen Kommentar.

Wie viele ähnliche Fragen zeigen, ist die Antwort "Nein". Die Lösung ist typischerweise ein CTE oder eine Unterabfrage. Diese "Einschränkung" ist eine Eigenschaft der SQL-Sprache, nicht einer bestimmten Datenbank.

SQL Server hat eine dritte Methode (weshalb ich antworte). Dies ist für einen komplexen Ausdruck geeigneter. Ihr Beispiel ist kein gutes Beispiel, aber Sie können verwenden outer apply:

select p2.fn 
from person p outer apply 
    (select p.First_Name as FN) p2 
where p2.fn like 'D%' 
+0

Danke! Ich konvertiere Oracle in TSQL und ich sehe, wo sie es verwenden wie: ... von (wählen Sie Blah von Master) "Age" ... und später mit Where "Age" <25 ... hoffte, TSQL könnte das Gleiche. – cdburns123

1

Nur wenn Sie setzen die „verschachtelte Select“ (dies wird als Unterabfrage bezeichnet wird) in der FROM-Klausel:

select FN 
from (select First_Name as FN 
     from PERSON) z