2011-09-16 220 views
0

我有3個表Tablle1,Table2,Table3。 表1 &表2與Id1相關。 表2 &表3與Id2相關。SQL計算子查詢

  1. 我有以下查詢哪些工作。我如何獲得CTotal = C00 + C01 + C02?

  2. 我在哪裏添加OUTPUT語句來返回STOTAL的值& CTOTAL?

SELECT X.Id1, X.S00, X.S01, X.S02, X.S00 + X.S01 + X.S02 AS STOTAL, 
     CEILING(X.S00/@Size) AS C00, CEILING(X.S01/@Size) AS C01, 
     CEILING(X.S02/@Size) AS C02, 
     Tble1.Select00, Table1.Select01, Table1.Select02 

FROM(
    SELECT Table1.Id1, 
     SUM(CASE WHEN Table1.Select00 = 1 THEN Table3.Num00 ELSE 0 END) AS S00, 
     SUM(CASE WHEN Table1.Select01 = 1 THEN Table3.Num01 ELSE 0 END) AS S01, 
     SUM(CASE WHEN Table1.Select02 = 1 THEN Table3.Num02 ELSE 0 END) AS S02 
    FROM Table1 INNER JOIN 
       Table2 ON Table1.Id1 = Table2.Id1 INNER JOIN 
      Table3 ON Table2.Id2 = Table3.Id2 
     WHERE (Table1.Id1 = @Id1 
    ) 
    GROUP BY Table1.Id1) AS X INNER JOIN Table1 ON X.Id1 = Table1.Id1 
+0

凡在您的查詢的C03?我沒看到它。 – Icarus

回答

3

你可以只添加CEILING(X.S00/@Size) + CEILING(X.S01/@Size) + ... AS CTotal或使用派生表:

SELECT a.*, a.C01+a.C02+a.C03 AS CTotal FROM 
(
    [your_old_query] 
)a 

另一種方法來派生表 - CTE(公共表表達式)

+0

我會很懶,不會輸入我的答案的其餘部分,因爲@ a1ex07對我來說很重要:D。乾杯。 –

+0

只有一件事,因爲C01到C03是在內部查詢中定義的,所以外部查詢不需要將它引用爲'a.C01 + a.C02 + a.C03'? –

+0

@Anthony Accioly:你說得對,最好用別名引用(在這種情況下不需要,只有一個「表」)。定影... – a1ex07

0

裹多一個外選擇和添加它一起查詢。