2015-04-12 48 views
0

我有一个SQL语句,我使用 列1和2的select语句。这些列返回2个数字。使用SELECT列和结果来计算第3列

它看起来是这样的

SELECT column1, column2, (SELECT a FROM...) as num1, (SELECT b FROM...) as num2, (num1/num2) as num3 

我的问题是,当我尝试做使用NUM1和NUM2计算NUM3,我得到一个错误说NUM1/NUM2不是列。我如何使用这些结果来计算num3?感谢所有

达明

+0

您会收到错误消息,因为列(别名)的名称将在获取结果后生成。所以它们只能用于ORDER语句中 – Fabio

回答

1

你可以做一个子查询,这将有NUM1与NUM2然后计算NUM3

select T.*, (num1/num2) as num3 
FROM 
(
    SELECT 
     column1, column2, 
     (SELECT a FROM...) as num1, 
     (SELECT b FROM...) as num2, 
    FROM table1 
) T 
2

另一种方法是使用外部应用,它通常是更好,如果你有很多所以你不必重复所有这些:

SELECT 
    column1, column2, 
    n1.a, n2.b, n3.c 
FROM table1 
outer apply (SELECT a FROM...) as n1 
outer apply (SELECT b FROM...) as n2 
outer apply (select case when n2.b != 0 then n1.a/n2.b end as c) as n3 

添加也检查除以零。没有测试这个,但希望它没关系。