从两个不同的查询中添加两组数据

时间:2015-01-20 14:26:15

标签: sql sum add

我有2个查询收集了我需要的数据的一半而另一半收集了另一个查询,我得到的数据需要通过另一个查询中的数据添加。

First Query ...

SELECT 
    RO_OFFICER,RO_ACTIVITY , COUNT(RO_ACTIVITY)*Value as [Value*NumofActivity]
FROM    
    RoleCall.dbo.ROSTER as ro inner join [RSWH].DBO.[RSWHT_Hours_Assigned_To_Markers_LookUp] AS MR on RO_ACTIVITY = MR.MARKER
WHERE 
    ro_officer = '41584 ' 
    AND RO_STATUS = 'INFO'
    AND  RO_SHIFT_START between DATEADD(week, -12, GETDATE()) AND GETDATE() 
GROUP BY  
    RO_OFFICER,RO_ACTIVITY,Value

,返回的数据是......

  RO_OFFICER   RO_ACTIVITY   Value*NumofActivity
     41584      AVDAY           0
     41584      AVNIGHT         0
     41584      CALLIN          0
     41584      LATE            0
     41584      LEAVE           30
     41584      MSGLEFT         6
     41584      NOCONTACT       54
     41584      NOTAVAIL        30
     41584      OTHER           12
     41584      REFUSED         84

第二次查询......

SELECT 
    RO_OFFICER ,(ISNULL(SUM(RO_SHIFT_LENGTH - RO_BREAK_LENGTH), 0.0)/60.0)as [NumOfHoursWorkedInTheLast12Weeks],RSWH.dbo.RSWHF_GetMarker(RO_OFFICER, DATEADD(week, -12, GETDATE()), GETDATE()) AS Markers
FROM 
    ROLECALL.DBO.ROSTER as ro inner join [RSWH].DBO.[RSWHT_Hours_Assigned_To_Markers_LookUp] AS MR on RO_ACTIVITY = MR.MARKER
WHERE 
    RO_SHIFT_START >= DATEADD(week, -12, GETDATE()) AND RO_SHIFT_START <= GETDATE()
    AND RO.RO_STATUS = 'INFO'
    AND RO_OFFICER = '41584'

GROUP BY 
    RO_OFFICER

返回......

   RO_OFFICER   NumOfHoursWorkedInTheLast12Weeks         Markers
   41584        166.066666                           AVDAY(3), AVNIGHT(1), CALLIN(1), LATE(4), LEAVE(5), MSGLEFT(1), NOCONTACT(9), NOTAVAIL(5), OTHER(2),

我需要从第一个查询中求和Value * NumofActivity列,然后在第二个查询中添加numofhoursworkedinthelast12weeks。

所以最终结果应该是这样的......

Ro_Officer    TotalHours 
   41584         382

非常感谢帮助

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?如果合适,您可能希望使用左连接或右连接替换连接,但无论如何都应该使用连接。

Select a.RO_OFFICER, a.[Value*NumofActivity] + b.NumOfHoursWorkedInTheLast12Weeks [TotalHours]

from

(SELECT 
RO_OFFICER [RO_OFFICER],RO_ACTIVITY , COUNT(RO_ACTIVITY)*Value as [Value*NumofActivity]
FROM    
RoleCall.dbo.ROSTER as ro inner join [RSWH].DBO.[RSWHT_Hours_Assigned_To_Markers_LookUp] AS MR on RO_ACTIVITY = MR.MARKER
WHERE 
ro_officer = '41584 ' 
AND RO_STATUS = 'INFO'
AND  RO_SHIFT_START between DATEADD(week, -12, GETDATE()) AND GETDATE() 
GROUP BY  
RO_OFFICER,RO_ACTIVITY,Value) a
JOIN
(SELECT 
RO_OFFICER [RO_OFFICER] ,(ISNULL(SUM(RO_SHIFT_LENGTH - RO_BREAK_LENGTH), 0.0)/60.0)as [NumOfHoursWorkedInTheLast12Weeks],RSWH.dbo.RSWHF_GetMarker(RO_OFFICER, DATEADD(week, -12, GETDATE()), GETDATE()) AS Markers
FROM 
ROLECALL.DBO.ROSTER as ro inner join [RSWH].DBO.[RSWHT_Hours_Assigned_To_Markers_LookUp] AS MR on RO_ACTIVITY = MR.MARKER
WHERE 
RO_SHIFT_START >= DATEADD(week, -12, GETDATE()) AND RO_SHIFT_START <= GETDATE()
AND RO.RO_STATUS = 'INFO'
AND RO_OFFICER = '41584'

GROUP BY 
RO_OFFICER) b on a.RO_OFFICER = b.RO_OFFICER
相关问题