2013-03-01 28 views
17

現在、以下の2つの選択コマンドがあります。私がしたいのは、コード内の変数ではなく、SQLクエリで結果を一緒に追加することです。同じクエリで2つのselectコマンドの結果を追加する方法

select sum(hours) from resource; 
select sum(hours) from projects-time; 

両方のSQLを同じSQLに格納して、両方の結果の合計を出力することはできますか?

答えて

41

はい。それは、追記として:D

SELECT SUM(totalHours) totalHours 
FROM 
     ( 
      select sum(hours) totalHours from resource 
      UNION ALL 
      select sum(hours) totalHours from projects-time 
     ) s 

可能で、テーブル名projects-timeは、構文エラーを回避するために区切る必要があります。区切り記号は、使用しているRDBMSによって異なります。このような単純な

+1

いい仕事です。ありがとうございました。 – Rhys

+0

あなたは歓迎です: 'D' –

+0

最後には何がありますか?それはタイプミスですか? – Rhys

19

何かがselect句でサブクエリを使用して行うことができます。このような単純なクエリについて

select ((select sum(hours) from resource) + 
     (select sum(hours) from projects-time) 
     ) as totalHours 

、そのような副選択は妥当です。

一部のデータベースでは、クエリをコンパイルするためにfrom dualを追加する必要があります。

あなたがそれぞれ個別に出力したい場合:

select (select sum(hours) from resource) as ResourceHours, 
     (select sum(hours) from projects-time) as ProjectHours 

あなたは合計の両方が必要な場合、サブクエリは便利です:一度

select ResourceHours, ProjectHours, (ResourceHours+ProjecctHours) as TotalHours 
from (select (select sum(hours) from resource) as ResourceHours, 
      (select sum(hours) from projects-time) as ProjectHours 
    ) t 
+0

それはそれが加減算のために働くので、私はこのソリューションが好きです – csharpsql

10

UNION ALLは、一度集計:

+0

':)' –

+2

@JW:わからないから慎重に*すべて* .. :) –

0

複数の集約liについて繰り返す(table_3 .... FROMのtable_1 UNION table_2 UNION ALL SELECT ASSURED_SUMからすべて SELECT額から SELECT金額)FROM TOTAL_AMOUNT AS KE SELECT和(金額)は、複数の操作を行いたい場合は

-1

使用

select (sel1.s1+sel2+s2) 

(select sum(hours) s1 from resource) sel1 
join 
(select sum(hours) s2 from projects-time)sel2 
on sel1.s1=sel2.s2 
関連する問題