简体   繁体   中英

Adding Two sets of data from 2 different queries together

I have 2 queries which gather one half of the data i need and the other half from the other query, the data i get needs to be added by the data in the other query.

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

and the data returned is ...

  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

2nd query...

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

which returns....

   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),

I need to Sum the Value*NumofActivity column from the first query and then add numofhoursworkedinthelast12weeks from the second query.

So the Final Outcome should look something like this...

Ro_Officer    TotalHours 
   41584         382

Help will be much appreciated

How about something like this? You may want to replace the join with a left or right join if appropriate but a join should work in any case.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM