Изменить форматирование чисел на основе значений другого столбца в SSRS - PullRequest
0 голосов
/ 27 мая 2020

Я хочу изменить формат значений на основе другого столбца. В основном, основываясь на столбце Тип, я хочу изменить числовой формат. Любая помощь будет принята с благодарностью.

Ниже представлен текущий отчет tablix. Он имеет 3 столбца (Тип, США и Великобритания). он всегда имеет 4 строки (Продажи, Количество, Процент и Примечания). Я пробовал использовать функцию форматирования, но это вызывает ошибку для других строк. Switch (Fields! Quantity.Value = "Quantity", FormatNumber (Fields! US.Value, 0))

Тип США Великобритания

Продажи 123,36 2122,2

Количество 2345 3451

Процент 0,81 0,91

Примечания NetSales GrossSales

Дата 20 мая 2020 г. 11:00 20 мая 2020 12:00 PM

Сейчас , Я хочу отобразить их, как показано ниже

Тип США Великобритания

Продажи 123,36 долл. США 2122,2 долл. США

Количество 2345 3451

Процент 81 % 91%

Примечания Чистые продажи Валовые продажи

Дата 11:00 12:00

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Предполагая, что ваш запрос набора данных действительно возвращает эти 3 столбца в том виде, в котором они представлены в вашем примере, вам необходимо протестировать столбец Type ....

Я воссоздал набор записей, используя следующий код в запрос набора данных

DECLARE @t TABLE (Type varchar(10), US varchar(50), UK varchar(50))
INSERT INTO @t VALUES
    ('Sales', '123.36','2122.2'),
    ('Quantity', '2345','3451'),
    ('Percentage', '0.81',' 0.91'),
    ('Notes', 'NetSales','GrossSales')
SELECT * FROM @t

Затем я добавил две идентичные таблицы, одну для отображения неформатированных значений, а другую для отображения их после применения выражений форматирования.

enter image description here

Для выражения US Столбца используется следующее выражение, которое в основном преобразует каждую текстовую запись в значение, которое затем применяется из форматирования.

=SWITCH(
    Fields!Type.Value = "Sales", FORMAT(VAL(Fields!US.Value),"$0.00"),
    Fields!Type.Value = "Quantity", FORMAT(VAL(Fields!US.Value),"n0"),
    Fields!Type.Value = "Percentage", FORMAT(VAL(Fields!US.Value),"p0"),
    Fields!Type.Value = "Date", FORMAT(cdate(Fields!US.Value), "HH:mm tt")
    True, Fields!US.Value
    )

Выражение для Великобритании практически идентично .

=SWITCH(
    Fields!Type.Value = "Sales", FORMAT(VAL(Fields!UK.Value),"£0.00"),
    Fields!Type.Value = "Quantity", FORMAT(VAL(Fields!UK.Value),"n0"),
    Fields!Type.Value = "Percentage", FORMAT(VAL(Fields!UK.Value),"p0"),
    Fields!Type.Value = "Date", FORMAT(cdate(Fields!UK.Value), "HH:mm tt")
    True, Fields!UK.Value
    )

Примечание финал True действует как ELSE

Окончательный результат выглядит примерно так ...

enter image description here

Для справки. «n0» означает использование разделителя тысяч с нулевым десятичным разрядом, а «p0» означает формат в процентах с нулевым десятичным разрядом.

ОБНОВЛЕНИЕ A ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ ИЗ OP

Если у вас есть дата в виде строки, например May 20 2020 11:00AM, вы можете добавить дополнительную строку к переключателю перед `True, Fields! UK.Value. Я отредактировал приведенные выше выражения, чтобы даты были строками

с использованием Fields!Type.Value = "Date", FORMAT(cdate(Fields!UK.Value), "HH:mm tt")

все, что мы делаем, это преобразовываем строку в дату с помощью CDATE (), а затем форматируем tat, чтобы показать часы только в формате AM / PM.

= FORMAT (cdate (Fields! dt.Value), «ЧЧ: мм tt»)

1 голос
/ 27 мая 2020


Функция « Switch » действительно хороша для вашего сценария. Единственное, чего не хватает, - это вывод для ваших условий, вы можете найти его здесь:

SSRS - поля форматирования для отображения символа валюты с двумя десятичными знаками

или здесь

поля форматирования для отображения валюты в SSRS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...