我有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
非常感谢帮助
答案 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