MS Access Query Sort with Percents: почему сортировка только по первой цифре?
У меня есть следующий запрос (который работает отлично), который вытягивает 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
Спасибо!
1 ответ
Я бы предположил, что это вызвано FormatPercent
Функция, которая, насколько я понимаю, может быть только логичной, заключается в том, что она преобразуется в строку. Единственный способ получить "%" в значениях - это если это строка. Это то, что заставляет твой род выключаться. Удалить FormatPercent
и посмотрим, что получится.
Если вы хотите отформатированное значение, вы можете добавить другой столбец к выходным данным в качестве формата и отсортировать по вычисленному значению, которое не отформатировано, чтобы получить отформатированный столбец в правильном порядке.