我有以下查询(运行良好),用于提取 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
,看看会发生什么。
如果需要格式化值,则可以将另一列作为格式添加到输出中,并对未格式化的计算进行排序,以使格式化的列按正确的顺序排列。