空值和创建访问查询的百分比

时间:2017-03-02 16:21:09

标签: sql ms-access null expression

我正在尝试创建一个创建百分比的查询。不幸的是,涉及空值。百分比是为员工创建一个分数 - 现在,我们的Excel工作表中的空值计为正数。当我们转向Access时,他们真的不应该算作员工的积极或消极点。我目前将其设置为查询:

QAScore: (NZ([UtilizedScript])+NZ([NeedsAssessment])+NZ([PlanRecommendation])+NZ([AskedForSale])+NZ([OvercameObjections]))/200

因此,在添加方面,空值被计为零。但是,我希望总得分可以反映输入的空值。因此,例如,如果UtilizedScript值50分,PlanRecommendation为20,并且对于员工这些实例都不适用,他们可能获得的总金额不会是200 - 它本来是130.有没有办法我可以添加这个逻辑来计算这些实例,而不会影响实际超出总数200的实例吗?我是一个新手,所以我很感激我能得到的任何帮助!

(我也应该提到这些值不仅不是全部或全部。例如使用Utilized Script:有人可以得到全部为50,得到一半为25,得到0为未命中,或者为空)

这是我目前所处的地方(Ik是一个怪物的长度) QAScore :( NZ([UtilizedScript])+ NZ([GatheredInfo])+ NZ([Hold])+ NZ([CallDisposition])+ NZ([BuiltRapport])+ NZ([EffectiveCommunication])+ NZ([PhoneEtiquette] )+ NZ([所有权])+ NZ([UsedResources])+ NZ([ProfessionalConduct])+ NZ([AccurateInformation])+ NZ([呼叫控制])+ NZ([QualifiedCallerEligibility])+ NZ([NextSteps]) + NZ([NeedsAssessment])+ NZ([PlanRecommendation])+ NZ([AskedForSale])+ NZ([OvercameObjections]))/(= IIF(Eval([UtilizedScript] In(" 6", " 3"," 0"))," 6"," 0")+ IIF(Eval([GatheredInfo] In(&#) 34; 14"," 7"," 0"))," 14"," 0")+ IIF(Eval( [Hold] In(" 6"," 3"," 0"))," 6"," 0&#34 ;)+ IIF(Eval([CallDisposition] In(" 10"," 5"," 0"))," 10", " 0")+ IIF(Eval([BuiltRapport] In(" 10"," 5"," 0")),&# 34; 10"," 0")+ IIF(Eval([EffectiveCommunication] In(" 6"," 3"" 0&#) 34;))," 6"," 0")+ IIF(Eval([PhoneEtiquette] I n(" 10"," 5"," 0"))," 10"," 0")+ IIF(Eval([所有权] In(" 8"," 4"," 0"))," 8",&#34 ; 0")+ IIF(Eval([UsedResources] In(" 8"," 4"," 0"))," 8& #34;," 0")+ IIF(Eval([ProfessionalConduct] In(" 20"," 10"," 0") )," 20"," 0")+ IIF(Eval([AccurateInformation] In(" 18"," 9",&# 34; 0"))," 18"," 0")+ IIF(Eval([CallControl] In(" 10"," 5"," 0"))," 10"," 0")+ IIF(Eval([QualifiedCallerEligibility] In(" 10&#) 34;," 5"," 0"))," 10"," 0")+ IIF(Eval([NextSteps] In (" 8"," 4"," 0"))," 8"," 0")+ IIF (Eval([NeedsAssessment] In(" 14"," 7"," 0"))," 14"," 0")+ IIF(Eval([PlanRecommendation] In(" 14"," 7"," 0"))," 14&# 34;," 0")+ IIF(Eval([AskedForSale] In(" 18"," 9&#) 34;," 0"))," 18"," 0")+ IIF(Eval([OvercameObjections] In(" 10" " 5"" 0"))," 10"" 0&#34))

1 个答案:

答案 0 :(得分:0)

我认为你想要的表达是:

(NZ([UtilizedScript]) + NZ([NeedsAssessment]) +
 NZ([PlanRecommendation]) + NZ([AskedForSale]) +
 NZ([OvercameObjections])
) /
(IIF([UtilizedScript]>=0,1,0) + IIF([NeedsAssessment]>0,1,1) + 
 IIF([PlanRecommendation]>=0,1,0) + IIF([AskedForSale]>=0,1,0) +  
 IIF([OvercameObjections]>=0,1,0)
)

如果您的数据每行只有一个分数,而不是将分数分成不同的列,这会更容易。