2011-08-30 52 views
3

我能做到这一点:SQL处理值

SELECT 
    1 AS one, 
    2 AS two, 
    1 + 2 AS three; 

但我想这样做:

SELECT 
    1 AS one, 
    2 AS two, 
one + two AS three; 

这可能吗?

回答

4

你可以这样做:

SELECT one, two, (one+two) as three 
FROM 
(
    SELECT 
     1 AS one 
     2 AS two 
) t; 
+0

+1是的,这是要走的路 - 没有一个子查询或CTE,一个**不能**在同一个SELECT中使用列别名 –

+0

谢谢,我之前尝试过,但我的问题变成了另一种:我的父查询有几个连接,我的“一个”和“两个”列是使用这些值的子选择连接。这意味着我将不得不在这个SELECT中作为一个表格进行连接。感谢marc_s btw的解释! – taff

2

的方法是这样的:

SELECT one, two, one + two AS 'three' 
FROM (SELECT 1 as 'one', 2 as 'two') myTable 
+0

我太慢了。 – OCary