SQL Server>查询>列名称

时间:2010-04-29 17:10:05

标签: sql-server

我有类似的东西

Select A.a, A.b, A.a+A.b as c, (A.a+A.b*2)+A.d as d from Table

但我想知道,如果有可能的话,可以使用这样的东西:

Select A.a,A.b,A.a+A.b as c, (c*2)+A.d as d from Table

谢谢

3 个答案:

答案 0 :(得分:3)

不,你做不到,但最好的办法是使用computed column

@pojomx:

如果您不想在查询中保留计算值,则可以使用计算列:

示例:

create table orders
(
product varchar(50) not null,
qty int not null,
unit_price money not null,
amount as qty * unit_price persisted
);

insert into orders(product,qty,unit_price) values('KEYBOARD',5, 20);

select * from orders;

输出:

product    qty    unit_price   amount
KEYBOARD   5      20.00        100.00

答案 1 :(得分:3)

列别名在select的其他列中不可用。您可以使用内联视图重写:

select a, b, c, (c*2)+d as d
from (select A.a, A.b, A.a+A.b as c, A.d as d from Table A) table_alias_for_view

答案 2 :(得分:1)

不在SQL Server中,您必须在第一个示例中执行此操作:

Select A.a, A.b, A.a+A.b as c, (A.a+A.b*2)+A.d as d from Table

或使用派生表,如:

SELECT
    dt.a, dt.b,dt.c, dt.c*2+dt.a as d
    FROM (Select 
              A.a, A.b, A.a+A.b as c
              from Table
         ) dt
相关问题