2016-04-24 19 views
2

Ist es möglich, einen Spaltenalias ohne Verwendung von Unterabfragen in SQL 2008 auszuwählen?SQL-Spalte wählen Alias ​​ohne Unterabfrage

*****, was ich tun möchte: ******

Select col1*col2 as NewColumn, NewColumn*col3 from table 

Wenn ich versuche, dies obwohl ich den Fehler:

Invalid column name 'NewColumn'

*** * was ich stattdessen jetzt *****

Select Newcolumn*col3 from (Select col1*col2, col3 from mytable) Q1 

tue würde ich mag Unterabfrage zu vermeiden, wo möglich, da ich viele Tabellen bin Füge- und wollen, dass die Abfrage besser lesbar machen.

Vielleicht gibt es einen noch besseren Weg, dies zu tun?

Vielen Dank im Voraus.

+1

Verwenden Sie eine Unterabfrage oder ein CTE. –

Antwort

1

Sie können eine Unterabfrage oder CTE verwenden. . . Oder, wenn Sie wirklich wollen, outer apply:

select x.NewColumn, x.NewColumn * col3 
from . . . cross apply 
    (select col1*col2 as NewColumn) x; 
+1

Wie der Titel schon sagt, möchte ich eine Unterabfrage vermeiden. Wie würde ich ein CTE benutzen? – Rdisnic

+0

@Rdisnic. . . Ihre Anforderung besteht darin, Unterabfragen zu vermeiden, um die Abfrage lesbar zu halten. Das Hinzufügen eines weiteren Ausdrucks in der FROM-Klausel ist nicht dasselbe wie eine zusätzliche Verschachtelungsebene. –

0

Warum machen Sie diese kompliziert, wenn Sie einfach dies tun können,

die Sie interessieren,

Select col1*col2 as NewColumn, col1*col2*col3 as NewColumn2 from table 

Hope this helfen.

Verwandte Themen