没有子查询

时间:2016-04-24 12:47:24

标签: sql sql-server-2008

是否可以在sql 2008中不使用子查询的情况下选择列别名?

*****我想做什么:******

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

当我尝试这个时虽然我收到错误:

  

列名称无效' NewColumn'

****我现在在做什么而不是*****

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

我希望在可能的情况下避免使用子查询,因为我正在加入许多表并希望使查询更具可读性。

也许还有更好的方法可以做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

为什么你可以轻松地做到这一点,

试试这个,

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

希望这会有所帮助。