Показать положительный результат со знаком плюс ( + ) в SQL
У меня есть следующий запрос:
SELECT
CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
FROM
Table
причина, по которой у меня есть "/1000*-1", заключается в том, что я хотел бы, чтобы результаты отображались в единицах тысяч и инвертировались (отрицательные значения как положительные и наоборот) только с одним десятичным знаком.
Как я могу получить положительные значения со знаком плюс ( + ) перед ними так же, как отрицательные значения имеют знак тире ( -)?
3 ответов
SELECT
case
when CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) >= 0
then concat('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)))
else CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))
end AS NAME
FROM Table
можно использовать точку с запятой многосоставные строки с FORMAT
функция (вроде как вы бы с пользовательскими форматами номеров в Microsoft Excel).
формат числа может иметь до три секции кода форматирования, разделенных точка с запятой. Эти разделы определяют формат положительных, отрицательных и нулевых значений в следующем порядке:
<POSITIVE>;<NEGATIVE>;<ZERO>
пример:
FORMAT(@YourValue,'+0.0;-0.0')
(взято из этой)
я обычно тоже скрыть нули при отображении +/-
знаки, поэтому я использую строку форматирования:'+0;-0;'''
SELECT FORMAT(+5,'+0;-0;''') --returns:
+5
SELECT FORMAT(-5,'+0;-0;''') --returns:
-5
SELECT FORMAT(-5,'+0;-0;''') --returns:
<empty string>
для отображения нуля, а также вы можете использовать строку форматирования:'+0;-0;0'
применяется для: к TSQL, azure-sql-database, sql-server-2012, sql-server-2014, sql-server-2016
больше Информация:
- Microsoft Docs:
FORMAT
(Transact-SQL) - Microsoft Docs:Типы Форматирования
(Doc для .net но также относится к ) - Microsoft Docs:
SIGN
(Transact-SQL)
SELECT
REPLACE(CONCAT('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))), '+-', '-')
FROM
Table
этот подход покажет +0.0
, хотя.