2013-03-01 70 views
17

我目前有两条select命令,如下所示。我想要做的是将结果一起添加到SQL查询中,而不是代码中的变量。如何在同一查询中添加两条select命令的结果

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

是否有可能在同一个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 2013-03-01 03:12:33

+0

不客气':D' – 2013-03-01 03:13:47

+0

什么是最后的?这是一个错字吗? – Rhys 2013-03-01 03:14:39

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 2017-08-09 11:09:47

10

UNION ALL一次,一次聚集:

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 
+0

不是大部分,但所有':)' – 2013-03-01 03:14:19

+2

@JW .:谨慎因为我不知道*全部* .. :) – 2013-03-01 03:15:06

0

重复多个聚合li柯 SELECT SUM(数量)从TOTAL_AMOUNT( SELECT量TABLE_1 UNION ALL SELECT 量TABLE_2 UNION ALL SELECT 从ASSURED_SUM TABLE_3 .... )

-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 
相关问题