将一个表值相加并将其与另一个表的单个值进行分组

时间:2011-11-02 16:58:21

标签: sql tsql

我有两张桌子。

表1:实际值

包含所有雇员的表格以及他们在特定月份工作的小时数

|  ID  |  empID  |  hours  |  Month  |
--------------------------------------

表2:

每月有小时目标的目标表。目标是指员工工作的所有小时数总和应达到的金额。

|  ID  |  hours target  |  Month  |
-----------------------------------

是否可以使用表2的目标返回所有表1小时的总和,并将其按月分组并将其返回到单个数据集中?

实施例

|  Month | Actual Hours | hours target  | 
-----------------------------------------
|    1   |      320     |      350      |

希望这很清楚,非常感谢你考虑这个问题。

2 个答案:

答案 0 :(得分:2)

这应该有效:


SELECT t.[month], sum(a.[hours]) as ActualHours, t.[hourstarget]
FROM [TargetTable] t
JOIN [ActualsTable] a on t.[month] = a.[month]
GROUP BY t.[month], t.[hourstarget]

用简单的英文写的,你说的是“给我累积的所有小时数,按月分组(还包括当月的目标小时数)”。

答案 1 :(得分:2)

WITH 
    t1 AS (SELECT mnth, targetHours FROM tblTargetHours),
    t2 AS (SELECT mnth, sum(hours) AS totalhours FROM tblEmployeeHours GROUP BY mnth)
SELECT t1.mnth, t2.totalhours, t1.targethours
FROM t1, t2
WHERE t1.mnth = t2.mnth

结果:

 mnth   totalhours  targethours
 1  135 350
 2  154 350
 3  128 350