2015-04-12 46 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 

添加也檢查除以零。沒有測試這個,但希望它沒關係。