我有一个格式化的数字列,其中包含以下数据:
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>'
有什么建议吗?
答案 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