访问SQL查询以将列数据与行标准和获取分数进行匹配

时间:2017-02-24 10:01:20

标签: ms-access access-vba ms-access-2010

我正在建立一个记分卡,其中我在表格中列出的评分标准很少: tblMetric

指标表中列出了5个指标,前3个指标有6个指标范围,另外2个指标只有2个(> = X,TRUE或FALSE)

  1. Metric1得分为30
  2. Metric2得分为30
  3. Metric3得分为20
  4. Metric4得分为10
  5. Metric5得分为10
  6. 我已经从用户数据中编写了一个查询并提取了字段并完成了一些计算以获得所需的输出。现在我应该根据输出对用户进行评分。 用户查询有列 - 现在,每个这些指标的各列中每个用户的输出必须与度量表相匹配,并且必须获取实际得分列的实际得分并将其分配给该用户。

    关于如何做的任何提示或想法都会有很大的帮助。

    如果我不清楚,请告诉我

    更多详细信息:如果每个人的值与特定条件匹配,我想获取分数的查询。以下是样本标准列表。

    SELECT 
    [table].Agent, 
    Sum([table1].Offered) AS Offered, 
    Sum([table1].Answered) AS Answered, 
    Sum([table1].Abandoned) AS Abandoned, 
    Sum([table1].[Ansd within SLA]) AS [Ansd within SLA], 
    Sum([table1].[TotalLoginDur]/[Dayspresent]) AS Login_Time, 
    Sum([table1].[ActualBreak]/[Dayspresent]) AS Break_Time, 
    Sum([table1].[Handle_Duration])/Sum([table1].[Answered]) AS HandleTime, 
    Sum([table1].[Idle_Duration])/Sum([table1].[Answered]) AS IdleTime, 
    Sum([table1].[Ring_Duration])/Sum([table1].[Answered]) AS RingTime, 
    Sum([table1].[Talk_Duration])/Sum([table1].[Answered]) AS TalkTime, 
    Sum([table1].[Hold_Duration])/Sum([table1].[Answered]) AS HoldTime, 
    Sum([table1].[Wrapup_Duration])/Sum([table1].[Answered]) AS WrapupTime, 
    [table3].SumOfPresentDays AS Dayspresent, 
    [table2].QAScore AS QAScore, 
    
    IIf(Sum([table1].[Abandoned])/Sum([table1].[Offered])<=[check criteria],[fetch score based on criteria],0) AS CheckAbdn, 
    IIf(Sum([table1].[Ansd within SLA])/Sum([table1].[Offered])>=[check criteria],[fetch score based on criteria],0) AS CheckSLA, 
    IIf([Login_Time]>=[check criteria],[fetch score based on criteria],0) AS CheckLogin, 
    IIf([Break_Time]<=[check criteria],[fetch score based on criteria],0) AS CheckBreak, 
    ([CheckAbdn]+[CheckSLA]+[CheckLogin]+[CheckBreak])/4 AS TScore, 
    
    
    FROM (([table1] LEFT JOIN [table4] ON [table1].Agent = [table4].AgentName) LEFT JOIN [table3] ON [table1].Agent = [table3].Agent) LEFT JOIN [table2] ON [table1].Agent = [table2].Agent
    
    GROUP BY [table1].Agent, [table3].SumOfPresentDays, [table2].QAScore, Year([table1]![RecordDate]), Month([table1]![RecordDate]), [table4].[table4]
    
    HAVING (((Year([table1]![RecordDate]))=[Forms]![Home].[cboYearSel]) AND ((Month([table1]![RecordDate]))=[Forms]![Home].[cboMonthSel]) AND (([table4].[table4])=[Forms]![Home].[cboAgtCatSel]))
    
    ORDER BY Year([table1]![RecordDate]), Month([table1]![RecordDate]);
    

    Criteria sample table

1 个答案:

答案 0 :(得分:0)

您没有提供足够的信息来获得准确的解决方案,但让我们首先假设您可以更好地设计您的桌子&#34; Metric&#34;由数字MetricID字段标识,您的ToFrom范围字段也是数字。您实际上甚至不需要ToFrom每个分数的上限(或下限)。最后让我们来吧将ID重命名为ScoreID,因为我赢得了很多原因,但随着您获得数据库经验,这些原因应该变得明显。

您可以像这样识别分数:

SELECT TOP 1 ScoreID FROM tblMetric WHERE MetricID=1 and [To]<=15 ORDER BY [To] DESC

这将为您提供与度量标准1匹配且记分为15的记录。