2010-04-29 5 views
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 A.a,A.b,A.a+A.b as c, (c*2)+A.d as d from Table 

Спасибо вы

ответ

3

Псевдоним столбца не доступен в других столбцах выбора. Вы можете переписать, используя встроенное представление:

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 
+0

Я думал об этом ... спасибо =) – pojomx

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 
+0

I предположим, что имеет смысл ... вы не можете иметь самореферентные определения в определениях столбцов ... –

+0

XD fail, то, что вычисляются столбцы? x) – pojomx

+0

спасибо за информацию :) – pojomx

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 
Смежные вопросы