41

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

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

両方を同じ SQL に含めて、両方の結果の合計を出力することは可能ですか?

4

5 に答える 5

78

はい。可能です: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 によって異なります。

于 2013-03-01T03:04:45.223 に答える
34

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
于 2013-03-01T03:10:05.040 に答える
10

UNION ALL1 回、1 回集約:

SELECT sum(hours) AS total_hours
FROM   (
   SELECT hours FROM resource
   UNION ALL
   SELECT hours FROM "projects-time" -- illegal name without quotes in most RDBMS
   ) x
于 2013-03-01T03:12:37.473 に答える
0

次のような複数の集計について繰り返します。

SELECT sum(AMOUNT) AS TOTAL_AMOUNT FROM ( 
    SELECT AMOUNT FROM table_1
    UNION ALL 
    SELECT AMOUNT FROM table_2 
    UNION ALL 
    SELECT ASSURED_SUM FROM table_3
)
于 2016-05-18T17:44:12.667 に答える