使用SELECT作为列和结果来计算第三列

时间:2015-04-12 18:43:28

标签: sql sql-server sql-server-2008

我有一个SQL语句,我在第1列和第2列使用select语句。这些列返回2个数字。

它看起来像这样

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

我的问题是当我尝试使用num1和num2来计算num3时,我得到一个错误,说num1 / num2不是列。如何使用这些结果计算num3?

2 个答案:

答案 0 :(得分: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

还添加了除以零的检查。没有测试过这个,但希望它没问题。

答案 1 :(得分: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