Есть несколько решений, которые можно реализовать здесь. Я обсужу два, которые я считаю самыми легкими. Если они не сработают для вас, сообщите мне, потому что есть множество вариантов. Чтобы было легко, я назвал поле, на которое вы ссылаетесь, в своем вопросе как * num_text *.
Исправление в SSRS: Перейдите к Свойствам Таблицы для табуляции, отображающего данные. Перейдите на вкладку Сортировка. Нажмите «Добавить». В «Сортировать по» полю, нажмите кнопку выражения и введите следующее:
=CInt(IIF(Fields!num_text.value = "N/A",9999999,Fields!num_text.value))
Обратите внимание, что вам нужно конвертировать любые возможные текстовые значения числа больше любого возможный целое число/знака после запятой. В этом случае я выбрал 9999999 на основе примеров в вашем вопросе. Если у вас есть несколько текстовых значений, которые не преобразуются в число, построитель отчетов/BIDS позволит вам сохранить отчет, но при его рендеринге он отобразит #Error, что означает, что CInt (или любая другая формула преобразования, которую вы select) не удалось выполнить с помощью нечислового значения.
Fix в SQL: Добавить новое поле (например, field_sort) с типом данных числовой и использовать случай оператора, генерирующего текущее поле в вопросе, говоря:
, Case
When --Criteria leading to "N/A"
Then 9999999
Else num_text
End as field_sort
--Rest of SQL Script here
Order by field_sort
Тогда просто отображать num_text поле в SSRS , и значения будут правильно отсортированы. Если у вас много возможных строковых значений, тогда вам может быть проще исправить ошибки в SQL (вместо указания многочисленных инструкций IIF в SSRS.
Благодарим вас за ответ Christopher, Из-за наличия группы по запросу , Я не могу понять, как использовать SQL-решение. Для решения SSRS я попытался, но получил сообщение об ошибке при рендеринге отчета: выражение сортировки для группировки «cal» содержит ошибку: входная строка не была в Правильная форма – JamDakh
Это был я! Я был неправ за ценность! Теперь я исправил его, и он работал как шарм :) Спасибо Кристофер! – JamDakh
Добро пожаловать. Иначе, на всякий случай, когда вы снова столкнетесь с этим, нужно сделать все числовые строки одинаковой длины, включив предшествующие нули. Итак, если ваши номера превышают 999, вы должны сделать 1 = 001 и 10 = 010. Затем сортировка сначала поместит самую низкую цифровую цифру (т. Е. 0), а затем отбирает оттуда. Но я думаю, что решение SSRS & SQL, о котором я говорил, намного проще реализовать правильно. Удачи! –