Tsql 四舍五入及;在T-SQL中缩短货币金额

Tsql 四舍五入及;在T-SQL中缩短货币金额,tsql,Tsql,我的存储过程通过四舍五入返回一些我需要缩短的金额(金钱)。 金额将仅以百万和十亿为单位 DECLARE @m MONEY; SET @m = 7362095.45 DECLARE @l TINYINT, @digit TINYINT; SET @l = LEN(CAST(@m AS BIGINT)) SET @digit = IIF((@l % 3)=0, 3, (@l % 3)); SELECT '$' + LEFT(CAST(ROUND(@m, ((@l - @digit) * -1))

我的存储过程通过四舍五入返回一些我需要缩短的金额(金钱)。 金额将仅以百万和十亿为单位

DECLARE @m MONEY; SET @m = 7362095.45
DECLARE @l TINYINT, @digit TINYINT;

SET @l = LEN(CAST(@m AS BIGINT))
SET @digit = IIF((@l % 3)=0, 3, (@l % 3));

SELECT '$' + LEFT(CAST(ROUND(@m, ((@l - @digit) * -1)) AS VARCHAR(16)), @digit) + IIF(@l > 9, 'B', 'M') /* Amount will be either in M or B */
比如说,

$34,866,676.67 will be $35M
$34,366,676.67 will be $34M
$634,666,676.67 will be $635M
$7,634,666,676.67 will be $8B
$67,334,666,676.67 will be $67B
DECLARE @m MONEY; SET @m = 7362095.45
DECLARE @l TINYINT, @digit TINYINT;

SET @l = LEN(CAST(@m AS BIGINT))
SET @digit = IIF((@l % 3)=0, 3, (@l % 3));

SELECT '$' + LEFT(CAST(ROUND(@m, ((@l - @digit) * -1)) AS VARCHAR(16)), @digit) + IIF(@l > 9, 'B', 'M') /* Amount will be either in M or B */

我怎样才能做到这一点?我使用的是SQL Server 2014。

没关系,我刚刚发现了这个问题。
DECLARE @m MONEY; SET @m = 7362095.45
DECLARE @l TINYINT, @digit TINYINT;

SET @l = LEN(CAST(@m AS BIGINT))
SET @digit = IIF((@l % 3)=0, 3, (@l % 3));

SELECT '$' + LEFT(CAST(ROUND(@m, ((@l - @digit) * -1)) AS VARCHAR(16)), @digit) + IIF(@l > 9, 'B', 'M') /* Amount will be either in M or B */
如果有人感兴趣,请检查此代码:

DECLARE @m MONEY; SET @m = 7362095.45
DECLARE @l TINYINT, @digit TINYINT;

SET @l = LEN(CAST(@m AS BIGINT))
SET @digit = IIF((@l % 3)=0, 3, (@l % 3));

SELECT '$' + LEFT(CAST(ROUND(@m, ((@l - @digit) * -1)) AS VARCHAR(16)), @digit) + IIF(@l > 9, 'B', 'M') /* Amount will be either in M or B */

没关系,我只是想出来了。 如果有人感兴趣,请检查此代码:

DECLARE @m MONEY; SET @m = 7362095.45
DECLARE @l TINYINT, @digit TINYINT;

SET @l = LEN(CAST(@m AS BIGINT))
SET @digit = IIF((@l % 3)=0, 3, (@l % 3));

SELECT '$' + LEFT(CAST(ROUND(@m, ((@l - @digit) * -1)) AS VARCHAR(16)), @digit) + IIF(@l > 9, 'B', 'M') /* Amount will be either in M or B */