2011-09-16 12 views
0

私は3つのテーブルTablle1、Table2、Table3を持っています。 表1 &表2は、Id1に関連しています。 表2 &表3はId2に関連しています。計算によるSQLサブクエリ

  1. 私は以下の質問をしています。 CTotal = C00 + C01 + C02を取得するにはどうすればよいですか?

  2. ここでSTOTALの値を返すOUTPUTステートメントを追加しますか& 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は私のためにそれをしてくれたので、私の答えの残りの部分は入力しません。乾杯。 –

+0

C01からC03は内側のクエリで定義されているので、外側のクエリでは 'a.C01 + a.C02 + a.C03'として参照する必要はありませんか? –

+0

@Anthony Accioly:そうですが、エイリアスで参照するほうがいいです(この場合は、「テーブル」は1つだけです)。修正中... – a1ex07

0

選択して、一緒にすべてを追加し、より外側のいずれかでクエリをラップします。