SQL Server转换十进制数据

时间:2017-09-13 03:21:03

标签: sql-server

我有十进制(18,2)类型的数据量和货币字符类型

Currency    Amount
USD         1234.67
JPY         9876.00

我想选择这样的数据

Currency    Amount
USD         1234.67
JPY         9876

当货币为JPY时,我尝试将数据类型更改为十进制(18,0),但当货币为JPY时,它仍然会得到2位小数 这是我的SQL代码

CASE WHEN remitting_currency ='JPY' THEN CAST(SUM(c.amount) AS decimal(18,0)) ELSE CAST(SUM(c.amount) AS decimal(18,0)) END as amount

该代码仍然可以获得这样的数据

Currency    Amount
    USD         1234.67
    JPY         9876.00

还有另外一种方法吗?或者我的代码有什么问题?

谢谢

1 个答案:

答案 0 :(得分:0)

这可以通过相应的铸造来实现,具体取决于金额列的预期目的。

这样的事可能

declare @table1 table(Currency varchar(100), Amount money)

INSERT INTO @table1
SELECT 'USD', 1234.67
UNION SELECT 'JPY',9876

SELECT  Currency, 
[Amount] = CASE 
            WHEN Currency='JPY' THEN cast(cast(Amount as int) as varchar(100)) 
            ELSE cast(Amount as varchar(100)) END 
FROM @table1

然而,原则上,我同意@Squirrel的评论,这可能是一个演示问题,应该在那里得到满足。