SQL选择,如何将数字显示为货币和反向 - 数字显示为正数

时间:2015-03-26 18:50:11

标签: sql sql-server ssms

我有一个格式化的数字列,其中包含以下数据:

8547.22
-1254.22

由于我无法控制的原因,我需要以这种格式显示select的结果(这是一个更大的select语句的一个字段)我也不能添加任何新函数。

-$8,547.22
$1,254.22

所以要明确我需要添加货币格式(' $'和',')并将正数反转为负数,反之亦然。

我尝试过以下显然无效的方法:

case
when a.principal_outstanding like '-%'
then '$' + (SELECT RIGHT(REPLACE(CONVERT(varchar(20), (CAST(SUM(a.principal_outstanding) AS money)), 1), '.00', ''), LEN((REPLACE(CONVERT(varchar(20), (CAST(SUM(a.principal_outstanding) AS money)), 1), '.00', '')))) - 1)
when a.principal_outstanding not like '-%'
then '-' + '$' + (REPLACE(CONVERT(varchar(20), (CAST(SUM(a.principal_outstanding) AS money)), 1), '.00', '')) 
else 'ERROR2'
end as '<currentBalance>'

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果必须在SQL查询中执行此操作(而不是客户端):

SELECT  '$' + CONVERT(VARCHAR, CAST(TheValue * -1 AS MONEY), 1)
FROM    TheTable

修改:由于您使用的是负数,因此会变得更加丑陋,但是可以胜任。

SELECT  CASE WHEN TheValue <= 0
             THEN '$' + CONVERT(VARCHAR, CAST(TheValue * -1 AS MONEY), 1)
             ELSE '-$' + CONVERT(VARCHAR, CAST(TheValue AS MONEY), 1)
        END
FROM    TheTable