我有一个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?
答案 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