2016-04-24 95 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 

希望这会有所帮助。