我有以下查询:
SELECT
CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
FROM
Table
我有" / 1000 * -1"是我希望结果以千位为单位显示并反转(负值为正值,反之亦然)只有一位小数。
我怎样才能让正值在它们前面加上加号(+),就像负值有一个破折号( - )?
答案 0 :(得分:6)
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
答案 1 :(得分:2)
您可以将以分号分隔的多部分字符串与 FORMAT
函数一起使用(有点像在Microsoft Excel中使用自定义数字格式)。
数字格式最多可包含三个部分格式代码,由分号分隔。这些代码部分按顺序定义正数,负数和零值的格式:
<POSITIVE>;<NEGATIVE>;<ZERO>
示例:
的
FORMAT(@YourValue,'+0.0;-0.0')
强>(改编自this)
我在展示+/-
标志时通常还会隐藏零,所以我使用格式化字符串: '+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
FORMAT
(Transact-SQL) FORMAT
函数) SIGN
(Transact-SQL) 答案 2 :(得分:0)
SELECT
REPLACE(CONCAT('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))), '+-', '-')
FROM
Table
但这种方法会显示+0.0
。
答案 3 :(得分:0)
在MYSQL中,这可行...
CONCAT(IF(TimeZone> 0,'+',''),TimeZone)