レポートのソースとして使用する次の 2 つの手順があります。現在、SQL Server Reporting Services 2008 R2 レポートで 2 つの異なるテーブルを提示しています。これらは 2 つの異なるデータ セットに属しているため、それらをまとめることができないからです。
それらを単一のテーブルに表示したいのですが、ここで JOIN を使用しようとして成功していません。それ、どうやったら出来るの?
注: cName
in は in にIAgentQueueStats
対応UserId
しAgentActivityLog
ます。
/*** Aggregate values for Call Center Agents for calls, talk and hold time ***/
/*** The detail/row values is per 30-minute interval ***/
ALTER PROCEDURE [dbo].[sp_IAgentQueueStats_OnlyCalls_Grouped]
@p_StartDate datetime,
@p_EndDate datetime,
@p_Agents varchar(8000)
AS
SELECT [cName]
,sum([nAnswered]) SumNAnswered
,sum([nAnsweredAcd]) SumNAnsweredAcd
,sum([tTalkAcd]) SumTTalkAcd
,sum([nHoldAcd]) SumNHoldAcd
,sum([tHoldAcd]) SumTHoldAcd
,sum([tAcw]) SumTAcw
FROM [I3_IC].[dbo].[IAgentQueueStats]
WHERE dIntervalStart between @p_StartDate and DATEADD(s, 86400-1, @p_EndDate)
AND CHARINDEX ( cName ,@p_Agents)> 0
AND cReportGroup <> '*'
AND cHKey3 = '*' and cHKey4 ='*'
AND nEnteredAcd > 0
AND cReportGroup <> 'CCFax Email'
GROUP BY cName
そして、ここに2番目のものがあります:
/*** Aggregate values for Call Center Agents for status/activity time ***/
/*** The detail/row values is per start-time/end-time ***/
ALTER PROCEDURE [dbo].[sp_AgentActivity_Grouped]
@p_StartDate datetime,
@p_EndDate datetime,
@p_Agents varchar(8000)
AS
SELECT [UserId],[StatusCategory],SUM([StateDuration]) [StatusDuration] FROM
(
SELECT
[UserId]
,[StatusGroup]
,[StatusKey]
, CASE [StatusKey]
WHEN 'Available' THEN 'Productive'
WHEN 'Follow Up' THEN 'Productive'
WHEN 'Campaign Call' THEN 'Productive'
WHEN 'Awaiting Callback' THEN 'Productive'
WHEN 'In a Meeting' THEN 'Not Your Fault'
WHEN 'Project Work' THEN 'Not Your Fault'
WHEN 'At a Training Session'THEN 'Not Your Fault'
WHEN 'System Issues' THEN 'Not Your Fault'
WHEN 'Test' THEN 'Not Your Fault'
WHEN 'At Lunch' THEN 'Non Productive'
WHEN 'Available, Forward' THEN 'Non Productive'
WHEN 'Available, Follow-Me' THEN 'Non Productive'
WHEN 'At Play' THEN 'Non Productive'
WHEN 'AcdAgentNotAnswering' THEN 'Non Productive'
WHEN 'Do Not Disturb' THEN 'Non Productive'
WHEN 'Available, No ACD' THEN 'Non Productive'
WHEN 'Away from desk' THEN 'Non Productive'
ELSE [StatusKey]
END StatusCategory
,stateduration
FROM [I3_IC].[dbo].[AgentActivityLog]
WHERE [StatusDateTime] between @p_StartDate and DATEADD(s, 86400-1, @p_EndDate)
AND CHARINDEX ( [UserId] ,@p_Agents)> 0
AND [StatusKey] not in ('Gone Home','Out of the Office','On Vacation','Out of Town')
) a
GROUP BY [UserId],[StatusCategory]
ORDER BY [UserId], [StatusCategory] desc
ところで、あなたの投稿にコメント/返信するのに時間がかかる場合、それは興味の欠如ではなく、理解の欠如です...
これが私が望むレポートです: Rows: Person (= cName
in IAgentQueueStats
= UserId
in AgentActivityLog
)
列: からIAgentQueueStats
:
sum([nAnswered])
sum([nAnsweredAcd])
sum([tTalkAcd])
sum([nHoldAcd])
sum([tHoldAcd])
sum([tAcw])
からAgentActivityLog
合計'Productive'
合計'Not Your Fault'
合計'Non Productive'
ただし'Productive'
、'Not Your Fault'
と'Non Productive'
は行で繰り返される値であり、合計して列に「変換」する必要がある同じおよび値をAgentId
持つ多くの行を意味することに注意してください。AgentId
複雑ですね…