Предполагая, что ваш запрос набора данных действительно возвращает эти 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
Затем я добавил две идентичные таблицы, одну для отображения неформатированных значений, а другую для отображения их после применения выражений форматирования.
Для выражения 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
Окончательный результат выглядит примерно так ...
Для справки. «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»)