SQL Select,如何将数字显示为货币并反转 - 数字为正数

SQL Select, how to display numeric as money and reverse - numbers to positive

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

8547.22
-1254.22

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

-,547.22
,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>'

有什么建议吗?

如果您必须在 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