2016-04-24 98 views
2

是否可以選擇列別名而不使用sql 2008中的子查詢?沒有子查詢的SQL列選擇別名

*****我想做什麼:******

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

當我嘗試這個,雖然我得到的錯誤:

Invalid column name 'NewColumn'

*** *什麼,我現在做的,而不是*****

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

我想避免子查詢在可能的情況,因爲我加入很多表,並希望使查詢更具可讀性。

也許有更好的方法來做到這一點?

在此先感謝。

+1

使用子查詢或CTE。 –

回答

1

您可以使用子查詢或CTE。 。 。或者,如果你真的想要,outer apply

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

正如標題所示,我想避免子查詢....我將如何使用CTE? – Rdisnic

+0

@Rdisnic。 。 。您的請求是爲了避免子查詢使查詢可讀。在'FROM'子句中增加一個表達式與另一層嵌套不同。 –

0

你爲什麼做這個複雜的時候,你可以很容易地做到這一點,

試試這個,

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

希望這會有所幫助。