如何使SQL代码正确显示?
我正在尝试根据值使用字母a、B、C或D更新“案例级别建议”字段。但是,代码可以工作,但是对于超过3的所有内容,代码只显示“B”。我该如何解决这个问题 代码如下:如何使SQL代码正确显示?,sql,ms-access,Sql,Ms Access,我正在尝试根据值使用字母a、B、C或D更新“案例级别建议”字段。但是,代码可以工作,但是对于超过3的所有内容,代码只显示“B”。我该如何解决这个问题 代码如下: SELECT [Calculated Total].casemain_id, [Calculated Total].category, Sum([Calculated Total].Total) AS SumOfTotal, IIf([SumOfTotal]>=4,"B",IIf([SumOfTotal]<
SELECT [Calculated Total].casemain_id, [Calculated Total].category, Sum([Calculated Total].Total) AS SumOfTotal, IIf([SumOfTotal]>=4,"B",IIf([SumOfTotal]<=3,"A",IIf([SumOfTotal]>=6,"C",IIf([SumOfTotal]>=9,"D","C")))) AS [Case Level Suggested]
FROM [Calculated Total]
GROUP BY [Calculated Total].casemain_id, [Calculated Total].category;
选择[Calculated Total].casemain\u id[Calculated Total].category,Sum([Calculated Total].Total)作为SumOfTotal,IIf([SumOfTotal]>=4,“B”,IIf([SumOfTotal]=6,“C”,IIf([SumOfTotal]>=9,“D”,“C”))作为[建议的案例级别]
从[计算总数]
分组依据[Calculated Total].casemain\u id[Calculated Total].category;
您的问题是IIf
的工作方式,根据它们在代码中的写入顺序从左到右:
- 总数是否小于或等于3?-若有,则"A";李>
- 总数是否大于或等于4?-如果是,那么“B”
SELECT [Calculated Total].casemain_id, [Calculated Total].category, Sum([Calculated Total].Total) AS SumOfTotal,
IIf([SumOfTotal]<=3,"A",IIf([SumOfTotal]>=9,"D",IIf([SumOfTotal]>=6,"C",IIf([SumOfTotal]>=4,"B","C")))) AS [Case Level Suggested]
FROM [Calculated Total]
GROUP BY [Calculated Total].casemain_id, [Calculated Total].category;
选择[Calculated Total].casemain\u id[Calculated Total]。类别,总和([Calculated Total].Total)作为总和,
IIf([SumOfTotal]=9,“D”,IIf([SumOfTotal]>=6,“C”,IIf([SumOfTotal]>=4,“B”,“C”))作为[建议的案例级别]
从[计算总数]
分组依据[Calculated Total].casemain\u id[Calculated Total].category;
就本质而言,
IIF
计算结果为满足第一个True
条件。因此,只要分配了B
,它就不会重新调整重叠条件。理想情况下,考虑互斥条件:
IIf([SumOfTotal <= 3,'A',
IIF([SumOfTotal] >= 4 AND [SumOfTotal] < 6, 'B',
IIf([SumOfTotal] >= 6 AND [SumOfTotal] < 9, 'C',
IIf([SumOfTotal] >= 9, 'D','C')))) AS [Case Level Suggested]
你在使用什么数据库?通常,除非您正在执行动态SQL,否则文字值用单引号包装。如果您使用的是SQL Server,请看一下(使用单引号,而不是双引号)。我使用的是Microsoft Access添加MSAccess标记,这样您也可以让MS Access群组查看您的问题。那么双引号在Access中是有效的:)太好了,可以了!如果我想将此代码应用到“类别”中,您能否回答?若要将此代码仅应用于“托盘”和“设备”的不同参数,请发布一个新问题,准确解释您的目标和您拥有的内容。
SWITCH([SumOfTotal] <=3,'A',
[SumOfTotal] >=4 AND [SumOfTotal] < 6, 'B',
[SumOfTotal] >=6 AND [SumOfTotal] < 9, 'C',
[SumOfTotal] >=9, 'D',
True, 'C') AS [Case Level Suggested]