MS 访问查询按百分比排序:为什么仅按第一个数字排序



我有以下查询(运行良好),用于提取 ID、周结束日期、性能和加班。

SELECT 
d2s_roster_tbl.employee_id, 
Format([WEEK_ENDING_DT],"mm/dd") AS week,
IIf([d2s_performance_tbl].[hrs_worked]=0,"",IIf([d2s_roster_tbl.position_desc] Like
    "*selector*",FormatPercent(Round(([d2s_performance_tbl].[goal_hrs]/[d2s_performance_tbl].[hrs_worked]),2),0) & 
    [d2s_performance_tbl].[lift_flag],IIf([d2s_roster_tbl.position_desc] Like
    "*operator*",FormatPercent(Round(([d2s_performance_tbl].[goal_hrs]/[d2s_performance_tbl].[hrs_worked]),2),0),""))) AS Perf,
d2s_performance_tbl.OT
FROM 
d2s_roster_tbl 
INNER JOIN d2s_performance_tbl ON D2s_roster_tbl.employee_id = d2s_performance_tbl.employee_id;

当我按 OT 排序时,它会正确排序。 当我按 perf(计算的百分比)排序时,它似乎只按第一个数字排序——降序排序显示如下结果:

6%
52%
500%
475%
47%
4%
39%
30%
23%
220%
199%
19%
188%

是什么原因导致它像这样排序? d2s_performance_tbl中的所有数值字段都有 2 位小数,格式如下:

Field Size: Double
Format: General Number
Decimal Places: Auto

谢谢!

我认为这是由FormatPercent函数引起的,根据我的理解,它只能合乎逻辑地转换为字符串。 在值中包含"%"的唯一方法是如果它是一个字符串。 这就是导致您的排序关闭的原因。取下FormatPercent,看看会发生什么。

如果需要格式化值,则可以将另一列作为格式添加到输出中,并对未格式化的计算进行排序,以使格式化的列按正确的顺序排列。

最新更新