2014-02-10 4 views
4

У меня есть поле varchar (я группирую) в наборе данных, который возвращает список значений: 20, 25, 40, 100, 110, 'N/A' ..сортировка строк числовые значения в SSRS 2008

Я хочу, чтобы «числовые» значения были отсортированы от низкого к высокому: то есть: 20, 25 ... 110, «N/A»

проблема заключается в том, что сортировка A> Z в группировке выдает следующие выход:

100, 110, 25, ..., N/A

Я не могу преобразовать в числовой тип данных, так как есть строковые значения ..

У кого-нибудь есть решение, пожалуйста?

Спасибо заранее Jam

ответ

5

Есть несколько решений, которые можно реализовать здесь. Я обсужу два, которые я считаю самыми легкими. Если они не сработают для вас, сообщите мне, потому что есть множество вариантов. Чтобы было легко, я назвал поле, на которое вы ссылаетесь, в своем вопросе как * 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.

+0

Благодарим вас за ответ Christopher, Из-за наличия группы по запросу , Я не могу понять, как использовать SQL-решение. Для решения SSRS я попытался, но получил сообщение об ошибке при рендеринге отчета: выражение сортировки для группировки «cal» содержит ошибку: входная строка не была в Правильная форма – JamDakh

+0

Это был я! Я был неправ за ценность! Теперь я исправил его, и он работал как шарм :) Спасибо Кристофер! – JamDakh

+0

Добро пожаловать. Иначе, на всякий случай, когда вы снова столкнетесь с этим, нужно сделать все числовые строки одинаковой длины, включив предшествующие нули. Итак, если ваши номера превышают 999, вы должны сделать 1 = 001 и 10 = 010. Затем сортировка сначала поместит самую низкую цифровую цифру (т. Е. 0), а затем отбирает оттуда. Но я думаю, что решение SSRS & SQL, о котором я говорил, намного проще реализовать правильно. Удачи! –

Смежные вопросы